1

ビューのスクリーンショットを作成するコードをいくつか書きました。その画像をフォト ライブラリに書き込みます。しかし、問題は、別のViewControllerの別のimageViewでその画像を使用したいということです。アプリのどこかに画像を保存して、別のViewControllerで使用するにはどうすればよいですか?

私のコード:

UIView* captureView = self.view;

UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, captureView.opaque, 0.0);
[captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

CGRect cropRect = CGRectMake(0 ,0 ,640,1136);
UIGraphicsBeginImageContextWithOptions(cropRect.size, captureView.opaque, 1.0f);
[screenshot drawInRect:cropRect];
UIImage * customScreenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(customScreenShot , nil, nil, nil);
4

3 に答える 3

0

ストーリーボードを使用している場合は、次のビュー コントローラーに渡すことができます。prepareForSegue メソッドで (これにより、ディスクに保存する必要がなくなります):

注: セグエの名前は MainStoryboard.storyboard で設定します。- mySegue.

kMySegueそのための鍵にすぎません。すなわち#define kMySegue @"mySegue"

imageInOtherViewController他のView ControllerのUIImageです。

// TheFirstViewController.m

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    id destinationViewController = [segue destinationViewController];

    if ([[segue identifier] isEqualToString:kMySegue]){
        if ([destinationViewController respondsToSelector:@selector(setImageInOtherViewController:)]){
            [destinationViewController setImageInOtherViewController:[UIImage imageNamed:@"myImage.png"]];
            FastCameraViewController *viewController = segue.destinationViewController;
            viewController.delegate = self;
        }   
    } 


    // OtherViewController.h

    @interface OtherViewController : UIViewController 
    {
    }
    @property (nonatomic, strong) IBOutlet UIImageView *otherViewControllerImageView;
    @property (nonatomic, strong) UIImage *imageInOtherViewController;

    // OtherViewController.m
    @implementation OtherViewController
    @synthesize otherViewControllerImageView;
    @synthesize imageInOtherViewController;

    - (void)viewDidLoad{
        [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

        [[self otherViewControllerImageView] setImage:imageInOtherViewController];

   }
于 2013-05-24T15:21:55.070 に答える