ios - 在 viewController transitionAnimation 中动画变换时如何避免剪辑
问题描述
我有一个自定义动画 viewController 转换的问题。
I have a collectionView (fromView) and when a cell is selected, it grows to fullSize (toView).
除了底部单元格之外,它工作得很好,它们在动画到中心时被裁剪。
我试图改变 containerView 的框架以获得额外的空间来避免裁剪,但它弄乱了其中 viewcontrollers 的位置。
这是过渡的相关代码和发现问题的草图。
非常感谢。
// originFrame 由 fromView 中的选定单元格定义 var originFrame = CGRect.zero
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
guard let toView = transitionContext.view(forKey: .to),
let fromView = transitionContext.view(forKey: .from)
else { return }
let finalFrame = toView.frame
let growFactor = finalFrame.width / originFrame.width
let centerDiffX = fromView.center.x-originFrame.midX
let centerDiffY = fromView.center.y-originFrame.midY
// Animate the transition.
UIView.animate(
withDuration: duration,
delay:0.0,
animations: {
let scaleTransform = CGAffineTransform(scaleX: growFactor, y: growFactor)
fromView.transform = CGAffineTransform(translationX: deltaX, y: deltaY).concatenating(scaleTransform)
...
解决方案
制作collectionview的快照就可以了;)
推荐阅读
- python - 生成一个由 N 个随机整数组成的数组,介于 1 和 K 之间,但每个数字至少包含一个
- javascript - 如何让图片交替闪烁
- objective-c - 从 XML 字典中提取数组
- php - 显示来自 Laravel 的 Ajax 响应的返回消息
- python - 打印一个 5 位数字,如果我们将 1 放在开头,则生成的 6 位数字比我们将 1 @ 放在数字末尾时小 3 倍
- javascript - 异步和等待在 javascript 中无法正常工作
- python - 独立于 Bokeh 服务器托管交互式 Bokeh 图
- linux - 名称开头带有连字符的文件
- c# - 在 Android 上播放大视频不卡顿
- python - 在子图中显示两个“ax2.set_xticklabels”数据集