0

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 を実行することはできません。

アニメーションが始まる前にセンタリング コードを実行する方法はありますか?

4

2 に答える 2

1

同じ効果を得るには、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;
}];
于 2013-10-10T20:47:18.553 に答える