我想要在两个视图控制器之间实现自定义转场效果。首先,这里有一张图片来说明我的需求:
我希望UICollectionViewCell可以展开到整个屏幕。在该单元格中,子视图是通过IB中的自动布局放置的。
我只想让每个子视图到达新位置。所以我尝试在动画块中使用
我考虑在动画发生时删除约束,但它并不起作用。
我还尝试通过创建约束的@IBOutlets并更改常量属性来解决问题。
这是我的代码:
![](https://istack.dev59.com/frze7.webp)
我只想让每个子视图到达新位置。所以我尝试在动画块中使用
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()
}
...
实际上,当动画开始时,标签会瞬间跳到一个位置,然后移动,在最后它们并不在正确的位置...
有什么想法吗?谢谢