0

ビューコントローラ間でカスタムアニメーションを実行しようとしています。以下の場合は、UINavigationControllerのpopViewControllerを模倣しています。ただし、iPhone、特にiPadではかなり遅れているようで、Time Profilerは、すべての遅れがaddSubview行に起因していることを確認しています。

とにかく、私はInterface Builderを介してnlViewに接続し、以下のコードを使用します。

    [self.view.superview addSubview:nlView.view];
    [nlView.view setFrame:CGRectMake(-kWidth, 20, kWidth, kHeight-20)];
    [UIView animateWithDuration:2
                     animations:^{
                         [nlView.view setFrame:CGRectMake(0, 20, kWidth, kHeight-20)];
                         [self.view setFrame:CGRectMake(kWidth, 20, kWidth, kHeight-20)];
                     }
                     completion:^(BOOL finished){
                         [self.view removeFromSuperview];
                     }];

では、どうすればこのラグを最小限に抑えることができますか?リークなどはありませんが、ビューを変更するときにラグが発生しないようにロジックを変更するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

ビューの位置をアニメーション化する場合は、フレームを設定する代わりに、次のようにビューのレイヤー位置をアニメーション化します。[nlView.view.layer setPosition: newPosition]...もちろん、プロジェクトにQuartzCoreを追加し、QuartzCore/QuartzCore.hをインポートする必要があります。

于 2012-06-23T03:46:01.900 に答える