在iOS中从图库设置图像

问题描述 投票:-2回答:3

我从库中选择一个图像并在UIImageView上显示,但是当我单击后退按钮并再次打开图像视图控制器时图像为空。

注销后我该怎么做才能在UIImageView上保持相同的图像?

我用过这段代码:

- (void)viewDidLoad {
    NSString *myGrrabedImage1=@"myGrrabedImage1.png";
    NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory1=[path objectAtIndex:0];
    NSString *fullPathToFile1=[documentDirectory1 stringByAppendingPathComponent:myGrrabedImage1];
    NSData *data=[NSData dataWithContentsOfFile:fullPathToFile1];
    [[self teacherImg]setImage:[UIImage imageWithData:data]];
    [data writeToFile:fullPathToFile1 atomically:YES];
}
- (IBAction)selectImg:(id)sender {

    pickerController = [[UIImagePickerController alloc]init];
    pickerController.delegate = self;

    [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];


    UIImage * img = [info valueForKey:UIImagePickerControllerEditedImage];

    teacherImg.image = img;

    [self presentViewController:pickerController animated:YES completion:nil];

}


- (void) imagePickerController:(UIImagePickerController *)picker
         didFinishPickingImage:(UIImage *)image

                   editingInfo:(NSDictionary *)editingInfo
{


        NSData *data=UIImagePNGRepresentation(teacherImg.image);
        NSString *myGrrabedImage1=@"myGrrabedImage1.png";
        NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentDirectory1=[path objectAtIndex:0];
        NSString *fullPathToFile=[documentDirectory1 stringByAppendingPathComponent:myGrrabedImage1];
        [data writeToFile:fullPathToFile atomically:YES];


        imagePicker.allowsEditing = YES;
        imagePicker.delegate = self;


        [[self teacherImg]setImage:image];


    [self dismissViewControllerAnimated:YES completion:nil];

}
ios objective-c iphone
3个回答
1
投票

viewDidLoad()方法中,您需要从doc加载图像。 DIR。

NSString *myGrrabedImage1 = @"myGrrabedImage1.png";
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory1 = [path objectAtIndex:0];
NSString *fullPathToFile = [documentDirectory1 stringByAppendingPathComponent:myGrrabedImage1];

方法1:

NSData *imgData = [NSData dataWithContentsOfFile: fullPathToFile];
UIImage *thumbNail = [[UIImage alloc] initWithData:imgData];

方法2:

UIIMage *image = [UIImage imageWithContentsOfFile: fullPathToFile];
[imgView setImage: image];

0
投票

您应该阅读图像数据并在ImageView方法中设置viewWillAppear图像。

从xib / storyboard加载视图后,viewDidLoad只被调用一次


0
投票

试试这种方式;

 - (void)viewDidLoad {
       NSString *myGrrabedImage1 = @"myGrrabedImage1.png";
       NSArray *path = 
       NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
       NSString *documentDirectory1 = [path objectAtIndex:0];
       NSString *pathFile = [documentDirectory1 stringByAppendingPathComponent:myGrrabedImage1];

       UIIMage *image = [UIImage imageWithContentsOfFile: pathFile];
      [teacherImg setImage: image];

 }

 - (IBAction)selectImg:(id)sender {

        pickerController = [[UIImagePickerController alloc]init];
        pickerController.delegate = self;

        [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

        [self presentViewController:pickerController animated:YES completion:nil];        
  }        

 - (void) imagePickerController:(UIImagePickerController *)picker
             didFinishPickingImage:(UIImage *)image
                       editingInfo:(NSDictionary *)editingInfo 
 {
        UIImage * img = [info   valueForKey:UIImagePickerControllerEditedImage];

        teacherImg.image = img;

        NSData *data=UIImagePNGRepresentation(teacherImg.image);
        NSString *myGrrabedImage1=@"myGrrabedImage1.png";
        NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentDirectory1=[path objectAtIndex:0];
        NSString *fullPathToFile=[documentDirectory1 stringByAppendingPathComponent:myGrrabedImage1];
        [data writeToFile:fullPathToFile atomically:YES];

        [[self teacherImg]setImage:image];

        [self dismissViewControllerAnimated:YES completion:nil];        
   }
© www.soinside.com 2019 - 2024. All rights reserved.