“魔法移动”效果自定义转场

2024-03-25

我试图在两个视图控制器之间进行自定义转换。首先,这是一张图片来说明我想要的:

我想要一个 UICollectionViewCell 扩展到整个屏幕。在此单元格中,子视图通过 IB 中的自动布局放置。

我只想让每个子视图转到新位置。所以我尝试了subview.frame = newSubview.frame在动画块中,但它不起作用(我认为是因为自动布局)。

我想在动画发生时删除约束,但它不起作用。

我还尝试对约束进行 @IBOutlets 并更改常量属性。

这是我的代码:

    let detailView = detailViewController.view
    let cellView = self.selectedCell

    container.addSubview(cellView!)

    let duration = self.transitionDuration(transitionContext)

    UIView.animateWithDuration(duration, delay: 0.0, options: .CurveEaseInOut, animations: {

            let newFrame = detailViewController.view.frame
            cellView!.frame = newFrame
            cellView!.imageView.frame = newFrame
            cellView!.labelTopConstraint.constant = 27
            cellView!.labelRightConstraint.constant = 8
            cellView!.layoutIfNeeded()
        }

...

实际上,当动画开始时,标签捕捉到一个位置,然后它们移动,最后它们不在正确的位置......

有任何想法吗 ?谢谢


查看此存储库,我认为这就是您正在寻找的 BCMagicTransition:https://github.com/boycechang/BCMagicTransition https://github.com/boycechang/BCMagicTransition

您的代码的问题是,您没有将要设置动画的集合视图单元格的子视图的帧转换为过渡的容器视图控制器的坐标,并且与其位置的最终帧相同。即使您使用自动布局,您仍然可以使用视图的框架来操作视图。

要实现此目的,请检查此方法(文档 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/convertRect:fromView:):

        func convertRect(rect: CGRect, fromView view: UIView?) -> CGRect

您还应该研究您想要动画的视图的动画快照。然后只需将快照添加到容器视图中,并将它们设置为转换后的最终帧的动画,然后在动画完成时将其删除。

希望这可以帮助 !

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“魔法移动”效果自定义转场 的相关文章

  • 动画 UIButton 上的用户交互

    我正在尝试在 Xcode 4 2 中制作一个针对 iPhone 的小应用程序 我想要的是一个UIButton使屏幕向下动画 当你按下它时 你将它的 alpha 设置为 0 我找到了一种方法UIView能够处理用户交互的类 并得出以下代码 U
  • 跨不同的 viewController 使用相同的 UIWebView

    TL DR 我需要实现一个在多个 ViewController 之间共享的单例 UIWebVIew 这个问题包含了我迄今为止的所有方法 应用程序委托 property strong nonatomic UIWebView singleWeb
  • 数据与线的日期和时间转换

    我使用 D3 V5 创建了此图表 另外 我已在小提琴上附加了示例数据 您可以点击此处查看 https plnkr co edit pINxcS9yt9AuJmSk02Fs p preview 我已经包括了tick函数代码块 它在向左滑动的路
  • OS X Server 持续集成 ipa 发行版

    我们有一个配置了 SSL 证书并启用了 Xcode 的 osx 服务器 在将 OSX Server 更新到 3 2 1 和 Xcode 6 0 1 之前 一切正常 我们遇到的问题是 当集成完成后 我们单击设备上的安装按钮 它会尝试下载 但会
  • 无法直接在iPhone上运行react-native应用程序(部署目标错误)

    问题 当我在模拟器中运行react native时 它工作正常 我现在尝试在直接连接到 MacBook 的 iPhone 上运行它 但出现了问题 有几个警告说Deployment Target is set to 7 0 这个具体是在哪里设
  • 在 iOS6 中处理手势识别器

    显然 当你有手势识别器和手势识别器时 iOS 6 会尝试自动处理这种情况 UIButton在同一个地方 用同一个手势被激活 当您想要单击按钮而不是激活手势识别器时 这种新的自动处理可以解决问题 但是产生了一个新问题当您希望手势识别器起作用时
  • 自动调整大小在 iOS11 / XCode 9 中不起作用

    看来Autoresizing使用 XCode 9 为 iOS11 构建时 视图不再可靠地工作 几个视图的布局最终以控件在 XIB 中的位置进行定位 但尚未进行适当的大小调整 这在 iOS10 中运行良好 并且可以与我们在 iOS11 中运行
  • 一段时间后 NSTimer 停止在后台触发

    嘿 我正在开发一个应用程序 其中我必须每 30 秒调用一次 API 所以我为它创建了 NSTimer 但是当我的应用程序进入后台时 计时器会在 3 4 分钟后停止触发 所以它只能在后台运行 3 4 分钟 但之后就不再运行了 我如何修改我的代
  • 在 iOS 中保存加密密钥的安全方法

    在我的 iOS4 应用程序中 我在多个地方使用 AES 加密 整个应用程序必须非常安全 为了做到这一点 我必须在这个应用程序中硬编码几个密钥 然后当我需要加密某些东西时随机选择这些密钥 我的问题是如何存储这些私钥 使用硬编码它们是否安全NS
  • iOS 11 文件提供程序扩展中的项目

    我有一个带有文件提供程序扩展名的应用程序 我尝试使用此方法为 ios 11 的新文件应用程序提供支持link https developer apple com documentation fileprovider content and
  • iOS中保存到照片库后获取UIImage数据

    将我的应用程序创建的图像保存到 iPhone 库并尝试将其恢复后 我遇到了问题 图像数据不同 创建图像 1 Code 我在不使用 alpha 的情况下创建图像 事实上 如果我使用 alpha 我会得到相同的结果 UIImage create
  • 如何在 UIBarButtonItem 上触发高亮效果

    当您点击UIBarButtonItem in a UIToolbar 有白光效果 是否有可能触发一个事件来显示这种效果 我不想按按钮 只应显示效果 我想向用户展示该按钮后面有新内容 感谢您的帮助 这是 highlight png 我不是在开
  • [UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?

    我认为我想覆盖整个屏幕 我想将其框架设置为覆盖整个屏幕 浏览堆栈溢出 我发现设置视图框架覆盖屏幕的两种不同方法 UIScreen mainScreen bounds UIApplcation sharedApplication keyWin
  • 如何生成 iPhone 模拟器构建或 .zip 文件以在 Facebook 中提交以在 iOS 中进行审核

    我向 Facebook 提交 my app ipa 文件 但被 Facebook 拒绝 并向我发送此消息 我们审核团队的注释 iPhone 您能否重新提交以供审核 提供您的 iOS 应用程序的模拟器版本 而不是 ipa 文件 我正在 iOS
  • 将正在运行的计数显示计时器添加到 iOS 应用程序中,例如时钟秒表?

    我正在使用一个应用程序 该应用程序可以处理设备运动事件并以 5 秒的增量更新界面 我想向应用程序添加一个指示器 以显示应用程序运行的总时间 看起来像秒表的计数器 例如本机 iOS 时钟应用程序 是计算应用程序运行时间并将其显示给用户的合理方
  • 需要帮助设置两个宽度相等的并排自动布局按钮

    使用自动布局我尝试在底部创建两个按钮 如下所示 拖动两个按钮后 我设置这样的约束 On Back button I set Leading Space to Container Margin and Bottom Space to Bott
  • 在 CAKeyFrameAnimation 期间检测碰撞

    当一个 UIImageView 在 CAKeyFrameAnimation 期间沿一条路径行进时 是否可以检测到两个 UIImageView 的碰撞 如果是这样 这是如何完成的 我尝试了多种方法 包括在动画期间检查 CGRect 是否发生碰
  • 如何按月对获取的日期进行分组

    我将数据插入到日期类型的核心数据中 但是当我尝试从数据库中获取数据时 我无法按月对它们进行分组 您可以找到我尝试解决方案的代码 但它不起作用 let groupedDict Dictionary grouping self lessons
  • 验证 iOS 应用程序时出错

    我正在尝试发布 iOS 应用程序 但是当我尝试验证我的构建时收到以下错误 Nib file Main iPad nib was not found Please ensure the specified file is included i
  • 增加导航栏高度

    我有以下代码 func navbarbutton UIView animateWithDuration 0 2 animations gt Void in let current self navigationController navi

随机推荐

  • 如何在 UIMarkupTextPrintFormatter 中添加图像?

    我正在尝试使用直接 HTML 打印文件 但是 在将图像添加到打印文件中时遇到困难 如何在我要打印的 HTML 中引用项目中的图像 UIMarkupTextPrintFormatter 支持标签吗 实际上比我想象的要简单得多 NSString
  • 向 Firefox 扩展添加屏幕截图功能

    是否有跨平台方法从 Firefox 扩展中获取屏幕截图 理想情况下 我希望能够截取 dom 元素的屏幕截图 无论它在页面上是否可见 例如 var 屏幕截图 屏幕截图 document getElementById example 任何指示或
  • 在python中打印下标

    在Python 3 3中 有什么方法可以在打印时使字符串中的部分文本成为下标吗 例如H2 H 然后是下标 2 如果您只关心数字 则可以使用str maketrans https docs python org 3 library stdty
  • JSF 2 复选框和布尔值获取器

    我正在生成一个基于 web 服务的 jaxws 客户端 Jaxb 将使用 java lang Boolean 而不是原始类型生成布尔值 除此之外 它还会生成 bean 的 is 命名约定 但是 如果我尝试将布尔值 例如 isOptional
  • Axios“无法在模块外部使用 import 语句”

    我有一个 Vue js 应用程序 其中两个文件包含 import axios from axios 这些文件位于应用程序内的 src lib 中 并在第一行包含 import 语句 无论 package json 说什么 在 Github
  • Vuex - 多次调度后运行函数

    我正在创建一个应用程序 在某个时刻我需要加载一些数据 但为了让用户看不到损坏的数据 我插入了一个加载组件 目前 我在负载中放置了 setTimeout 但在某些时候 API 响应可能需要超过 1 秒 所以我想仅在所有调度完成时更新加载状态
  • Ninject 教程/文档?

    根据官方网站 http ninject org learn 了解 Ninject 的最佳地点是官方维基 http wiki github com ninject ninject在 Github 上 真的吗 作为一个初学者 我发现官方维基 h
  • 使用什么命令代替 urllib.request.urlretrieve?

    我目前正在编写一个从 URL 下载文件的脚本 import urllib request urllib request urlretrieve my url my filename 文档urllib request urlretrieve
  • 如何让Java.awt.Robot输入unicode字符? (是否可以?)

    我们有一个用户提供的字符串 其中可能包含 unicode 字符 并且我们希望机器人键入该字符串 如何将字符串转换为机器人将使用的键码 你如何做到这一点 使它也独立于java版本 1 3 gt 1 6 我们对 ascii 字符所做的工作是 c
  • gRPC / Protobuf 接口版本控制

    假设我们使用 gRCP Protobuf 来连接许多应用程序 这些应用程序是由他们自己的团队以自己的速度开发和发布的 随着时间的推移 同一应用程序将出现不同版本 例如 安装在用户 PC 上的桌面应用程序 它们在定义的界面上使用不同的版本 虽
  • WordPress 搜索栏仅输出帖子标题

    我想用 PHP 创建一个 Wordpress 搜索栏 仅显示在我网站的一页中 我正在开发一个我制作的新主题 因此 搜索栏应该只输出与搜索关键字相关的我的帖子的永久链接 标题 我现在遇到的问题是搜索输出显示 lorem ipsum 文本和侧边
  • 存储 ASP.NET 会话变量的最佳解决方案是什么?状态服务器还是SQL服务器?

    状态服务器还是SQL服务器 存储 ASP NET 会话变量的最佳解决方案是什么 各自的优点和缺点是什么 在任何特定情况下 一个比另一个更好吗 以下是一些关于优点 缺点的想法 我还添加了 Microsoft Velocity 分布式缓存解决方
  • SQL 日期间隙

    我试图根据状态代码查找表中的间隙 表如下所示 状态表 StateID PK Code 1 AK 2 AL 3 AR 状态模型表 StateModelID StateID EfftiveDate ExpirationDate 1 1 2012
  • 尽管已对其进行了压缩,但仍然出现错误 FAILED BINDER TRANSACTION

    我想从以下位置返回图像添加更多索赔 to 添加索赔 listView 当我点击提交时button in 添加更多索赔 我收到消息E JavaBinder FAILED BINDER TRANSACTION 我用这个method https
  • 缩放图像直到 X 或 Y 与容器相同,然后裁剪其余部分

    我正在多个位置加载图像 网站主题将以不同的尺寸显示它们 我尝试了 CSS 属性 发现我可以使用高度和宽度参数缩放图像 并使用位置 相对和溢出 隐藏来裁剪图像 但我想做的是两者的结合 缩小图像 直到宽度等于容器元素的宽度或高度等于容器元素的高
  • 对一组闪烁的可组合项进行动画处理,控制同步/计时

    我希望两个可组合项同时开始并播放动画 例如 这是我的设置 LazyColumn semantics mergeDescendants true contentDescription contentDes item ShimmeringCom
  • 设置本地报表的数据源 - .NET 和报表查看器

    我创建了一个自定义控件 带有报告查看器的窗口窗体 我有以下代码来加载本地报告 包含在 CustomReportViewer 类中 Load local report this reportViewer1 ProcessingMode Pro
  • 不区分大小写的elasticsearch 大写或小写

    我正在使用弹性搜索 但遇到了问题 如果有人给我提示 我将非常感激 我想分析由不同条目组成的字段 名称 或 描述 例如 有人想搜索萨拉 如果他进入 SARA SAra 或 sara 他应该能够得到萨拉 弹性搜索使用分析器将所有内容变为小写 我
  • 如何在 OS X Leopard 上的 bash 脚本中进行日期数学运算?

    我意识到我可以编写一个小的 C 或 Ruby 程序来完成此操作 但我希望我的脚本具有尽可能少的依赖项 鉴于caveat 如何在 OS X 上的 bash 脚本中进行日期数学运算 我看到一个帖子 在另一个网站上 其中有人执行了以下操作 dat
  • “魔法移动”效果自定义转场

    我试图在两个视图控制器之间进行自定义转换 首先 这是一张图片来说明我想要的 我想要一个 UICollectionViewCell 扩展到整个屏幕 在此单元格中 子视图通过 IB 中的自动布局放置 我只想让每个子视图转到新位置 所以我尝试了s