我正在使用transitionFromView:toView:duration在一个视图和另一个视图之间切换。

我的源代码视图位于其父视图的中心。我还想将目标视图居中(如下面的完成部分所述)。

    [UIView transitionFromView:sourceView toView:destView duration:.3 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
        destView.center = destView.superview.center;
    }];


由于transitionFromView:toView:duration从其超级视图中删除了sourceView并将其替换为destView,因此您不能在调用之前简单地运行destView.center = destView.superview.center。

有没有办法在动画开始之前运行居中代码?

最佳答案

尝试使用transitionWithView:duration:options:animations:具有相同的效果:

self.destView.hidden = YES;
[self addSubview:self.destView];
destView.center = destView.superview.center;
// [self setNeedsLayout]; // I can't remember if this is necessary???

[UIView transitionWithView:self duration:0.3 options: UIViewAnimationOptionTransitionFlipFromLeft animations:^{

     self.destView.hidden = NO;
     self.sourceView.hidden = YES;

} completion:^(BOOL finished) {

     [self.sourceView removeFromSuperview];
     self.sourceView.hidden = NO;
}];

07-25 23:20