2

私は、ユーザーがパンおよびズームできる、最初は画面に合うサイズの大きな画像を表示することを仕事とするビューコントローラーを持っています。画像は携帯電話のカメラで撮影され、デバイスに保存され、を使用して再読み込みされました+[UIImage imageWithData:]

ナビゲーションスタックにコントローラーを表示しますが、次のようなフェードトランジションを使用します。

SGBImageController *imageController = [[[SGBImageController alloc] init] autorelease];
imageController = <theImage>;
[imageController loadView];

[UIView transitionWithView:self.navigationController.view
                  duration:0.33
                   options:UIViewAnimationOptionAllowAnimatedContent
                          |UIViewAnimationOptionTransitionCrossDissolve
                animations:^{

    [self.navigationController pushViewController:imageController animated:NO];

} completion:nil];

フェードアニメーションはスムーズなはずですが、ぎくしゃくしていて、楽器を見ると、ずっと時間を費やしていることがわかりますCA::Layer::RenderloadViewビューを表示するように強制するために行を追加しましたが、役に立ちませんでした。アニメーション化する前に、View Controllerにそれ自体を描画させるにはどうすればよいですか?

4

1 に答える 1

0

loadView を直接呼び出すべきではありません。これは OS が処理するものです。代わりに、imageController.view何らかの方法で参照するだけで読み込みが開始されます。デリゲート コールバックまたは NSNotification を使用して、SGBImageController のviewDidLoadメソッドが呼び出されたときにクラスに通知し、そこからアニメーションを開始できます。

于 2013-02-08T01:18:10.930 に答える