ios - UIView.transition 不会在第一侧移动 UIView 内容
问题描述
我正在使用 UIView.transition(with: duration: options: animations:) 函数来翻转卡片。当我在过渡仍在工作时为框架属性设置动画时,第一个 UIView 状态没有移动,它的位置是堆栈到父视图,但卡片另一侧的第二个状态正在移动和动画完美。如何解决?谢谢你。
解释代码: UIView.animate 被调用了两次。第一次执行动画关闭,然后完成关闭。这里没关系。接下来,当我按下按钮(参见视频)时,由于if语句将不再执行完成主体,但问题是当第一次完成关闭仍然动画翻转过渡时,动画关闭正在第二次执行并将卡片移动到新职位。第一张卡片上的所有内容都没有随着第二个动画移动,尽管第二面工作完美。
UIView.animate(withDuration: 2,
delay: delay,
options: [],
animations: { [unowned self] in
self.frame = CGRect(origin: newFrame.origin, size: newFrame.size)
},
completion: { [unowned self] (position) in
if self.destination != self.state {
UIView.transition(with: self,
duration: 8,
options: [.transitionFlipFromLeft, UIViewAnimationOptions.layoutSubviews],
animations: {[unowned self] in
self.state = self.destination
self.setNeedsDisplay()
},
completion: { (position) in
})
}
})
这是视频https://youtu.be/lRYT_6xWbWA
在屏幕截图上,卡片会随着属性动画向上移动和缩放。
解决方案
推荐阅读
- c# - 为什么 .NET Web API JSON 响应有效负载中的长类型在 16 位后四舍五入?
- google-maps - Flutter 在地图上设置折线失败
- objective-c - 临时 NSTextView 调用自定义 NSColor 子类,在后台线程调用 UI
- c++ - 你怎么知道从哈希表链中获取哪个值?
- spring-cloud-stream - 当 Sink binder 关闭时,Spring Cloud Stream Rabbit 关闭/重新创建 Source 连接
- heroku - H10 使用 Heroku 部署 Streamlit 应用程序时出现“应用程序崩溃”错误
- core-data - 更新 CoreData 中的数据及其在视图中的值
- css - 从所有元素和嵌套元素中选择第一个子元素
- python - 熊猫和 HDF5
- python - 使用多个数据输入从 Keras 获得不正确的预测