Ios &引用;“魔术招式”;效果自定义转换

Ios &引用;“魔术招式”;效果自定义转换,ios,autolayout,transition,subviews,Ios,Autolayout,Transition,Subviews,我正在尝试在两个视图控制器之间进行自定义转换。首先,这里有一张图片来说明我想要什么: 我想要一个UICollectionViewCell扩展到整个屏幕。在此单元格中,子视图与自动布局一起放置在IB中 我只希望每个子视图都转到新位置。所以我在动画块中尝试了subview.frame=newSubview.frame,但它不起作用(因为我认为是自动布局) 我想在动画发生时删除约束,但它不起作用 我还尝试对@IBOutlets进行约束,并更改常量属性 这是我的密码: let detailVi

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

我想要一个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:

代码中的问题是,您没有将要设置动画的集合视图单元的子视图的帧转换为转换的容器视图控制器的坐标,以及最终帧的位置。即使使用“自动布局”,也可以使用视图的框架操纵视图

要完成此操作,请签出此方法():

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


希望这有帮助

你找到解决问题的好办法了吗?
        func convertRect(rect: CGRect, fromView view: UIView?) -> CGRect