我正在使用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;
}];