0

UIImagePickerControllerユーザーが写真を撮ることができるaがありUIImageView、次のように保存します。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissModalViewControllerAnimated:YES];
    self.photoImageView.image = nil;
    [self.activityIndicatorView startAnimating];

    dispatch_async(dispatch_get_global_queue(0, 0), ^
    {
        UIImage *image = [[info objectForKey:@"UIImagePickerControllerOriginalImage"] retain];
        dispatch_async(dispatch_get_main_queue(), ^
        {
            self.photoImageView.image = image;
            [self.activityIndicatorView stopAnimating];
            self.rightButton.enabled = YES;
            [image release];
        });

    });
}

この画像をパラメータとしてUIViewControllerナビゲーションスタックにプッシュされる次の画像に渡すと、UINavigationトランジションが途切れ、途切れ途切れになります。プロファイルを作成しましたが、コード内で目立つものはありません。

カメラで撮った写真は大きいかもしれないと思いますが、それへの参照を渡すだけなら、なぜそれが何かに影響を与える必要があるのでしょうか?フォトライブラリに撮った写真があります。そこから写真を選択して次のトランジションに渡すと、すべてがスムーズになります。

誰もがこれを引き起こしている可能性があるものについて何か洞察を持っていますか?

4

1 に答える 1

1

おそらく、新しいUIViewControllerがナビゲーションスタックにプッシュされたときにサイズ変更プロセスが実行されるためです。

iPhone4カメラから撮影した写真の解像度が2592x1936(http://stackoverflow.com/questions/3270202/what-is-resolution-of-photo-taken-by-iphone-4-camera)であるとします。UIImageViewのサイズが400x300pxの場合、サイズ変更プロセスはviewWillAppearで実行され、トランジションが途切れる可能性があります。

これに対するいくつかの回避策:

  1. viewDidAppearに画像を表示します。画像への参照を保持し、viewDidAppearのimageView.imageに設定します。

  2. 画像のサイズを変更します。たとえば、表示する前に、まず640x960に変更します。

于 2013-01-04T04:52:52.657 に答える