什么是正确的方式使用[UIView transitionFromView:toView:…]与布局约束?
我想在superview约束toView中安装约束.在转换调用之前,我无法做到,因为View还没有超级视图. (在调用之后但在运行循环进行之前相同)等待直到完成块安装它意味着该视图将具有动画而没有约束.
解决方法
我将使用UIViewAnimationOptionShowHideTransitionViews选项,它允许toView和fromView在转换之前在视图层次结构中,但显示一个并隐藏另一个.
将toView设置为隐藏,将其添加到超级视图中,并在转换之前安装约束.然后,您可以删除完成块中的旧视图.这样的东西
[toView setHidden: YES]; [containerView addSubview: toView]; [containerView addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"|[toView]|" options: 0 metrics: nil views: NSDictionaryOfVariableBindings(containerView,toView)]]; [containerView addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[toView]|" options: 0 metrics: nil views: NSDictionaryOfVariableBindings(containerView,toView)]]; [UIView transitionFromView: fromView toView: toView duration: 1.0 options: UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionShowHideTransitionViews completion:^(BOOL finished) { [fromView removeFromSuperview]; }];