1

Core Animationでプッシュとポップのアニメーションをカスタマイズしたい!たとえば、次のように pushViewController にコードを記述します。

{
    //save currrent view's snapshot`

    m_curLayer = [self _ConstructLayerByView:self.view];

    [super pushViewController:viewController animated:NO];

    //save the next view's snapshot
    m_nextLayer = [self _ConstructLayerByView:self.view];

    //add these two new layers to self.view.layer, and add customized animations to them.
    [self _PushAnimation]; 
}

アニメーションは期待どおりに動作しますが、パフォーマンスが悪いです。いくつかのプロファイリングの後、renderInContext が非常に遅いことがわかりました。私のスナップショット機能は次のとおりです。

+ (id)CaptureView:(UIView *)view
{

    UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, [UIScreen mainScreen].scale);
    CGContextRef contenxt =  UIGraphicsGetCurrentContext();

    [view.layer renderInContext:contenxt];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return (id) [newImage CGImage];
}

renderInContext を最適化する方法、またはアニメーションをカスタマイズするより良い方法があるかどうかを尋ねたいと思いますか?

4

1 に答える 1

1

UIViewControllerに追加された新しい「container」機能を使用して独自のナビゲーションコントローラーをコーディングするか、UINavigationControllerをサブクラス化し、すべてのpushメソッドとpopメソッドをオーバーライドします。おそらく後者はうまく機能します-私は他の理由でそれをサブクラス化し、私のサブクラスはうまく機能します。

多くの人が、iOS5コンテナメソッドの新機能により、既存のコンテナクラスのすべてではないにしてもほとんどを再作成できるようになったとコメントしています。

于 2012-11-18T13:19:36.357 に答える