4

iPhone開発初心者です。写真ライブラリから選択した画像を移動およびスケーリングする画像ピッカーコントローラーを使用しているため、allowsediting = yes.

そして、私のピッカーはメソッドを終了しました:

 - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // Access the uncropped image from info dictionary

    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    self.imgForDisplay.image=[self scaleAndRotateImage:image];
    self.imagePicker.allowsEditing = YES;


    ImageDetailsViewController *imageDetailsVC = [[ImageDetailsViewController alloc] init];
    imageDetailsVC.imagedisplay.image = self.imgForDisplay.image;
    [picker pushViewController:imageDetailsVC animated:YES];



//[picker dismissModalViewControllerAnimated:YES];

}

そして、選択した画像を表示したい別のView Controllerをプッシュします。

ここで 2 つの問題があります。

1)画像を選択すると、「移動とスケーリング」画面なしで別のビューに移動しますが、移動すると画像が ImageDetailsViewController に表示されるようになりました。

2)もう一度戻って別の画像を選択すると、「移動とスケーリング」画面が表示されます。選択ボタンをクリックすると、ナビゲーション バーのない白い画面が表示されます。

選択ボタンのアクションを設定する方法はありますか?

4

3 に答える 3

2

私も同じ問題に直面しています。コードを使用してを使用して解決しました。これを実行すると便利です。

 - (void)imagePickerController:(UIImagePickerController *)picker  
    didFinishPickingMediaWithInfo:(NSDictionary *)info { 
        self.lastChosenMediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
        if ([lastChosenMediaType isEqual:(NSString *)kUTTypeImage]) { 
            UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage]; 
            UIImage *shrunkenImage = shrinkImage(chosenImage, imageFrame.size); 
            self.image = shrunkenImage; 
        } else if ([lastChosenMediaType isEqual:(NSString *)kUTTypeMovie]) { 
            self.movieURL = [info objectForKey:UIImagePickerControllerMediaURL]; 
        } 

        ImageSelectionView *imageSelectionVC = [[ImageSelectionView alloc] init];
        imageSelectionVC.theImage = image;
        [picker pushViewController:imageSelectionVC animated:YES];
        imageSelectionVC.dismissDelegate =self;


       // [picker dismissModalViewControllerAnimated:YES]; 
    } 

'

-(void)updateDisplay { 
    if ([lastChosenMediaType isEqual:(NSString *)kUTTypeImage]) { 
        imageView.image = image; 
        imageView.hidden = NO; 
        moviePlayerController.view.hidden = YES; 
    } else if ([lastChosenMediaType isEqual:(NSString *)kUTTypeMovie]) { 
        [self.moviePlayerController.view removeFromSuperview]; 
        self.moviePlayerController = [[MPMoviePlayerController alloc] 
                                       initWithContentURL:movieURL] ; 
        moviePlayerController.view.frame = imageFrame; 
        moviePlayerController.view.clipsToBounds = YES; 
        [self.view addSubview:moviePlayerController.view]; 
        imageView.hidden = YES; 
    } 
}
于 2012-05-18T12:55:35.180 に答える
1

次のようにピッカーモーダルを提示する方がよいと思います。

 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];

    picker.allowsEditing = YES;
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentModalViewController:picker animated:YES];

次に、画像を提示したビューコントローラーのビューに画像を表示します。

于 2012-05-04T16:01:27.913 に答える