2015-11-15 3 views
1

Существует простое приложение, на раскадровке добавлен UIImageView и кнопка Кнопка открывает фотогалерею, и я выбираю изображение, и в конце концов оно появляется на UIimaeView Но когда я убью приложение моментальный снимок не сохраняется Что делать?Сохранить фотографию после закрытия заявки

это мой код:

-(IBAction)takePic:(id)sender { 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 
    [picker dismissViewControllerAnimated:YES completion:nil]; 
} 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 

self.image.image=[info objectForKey:UIImagePickerControllerOriginalImage]; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

ответ

2

ок. попробуйте это:

с AssetsLibrary нежелателен из прошивки 9.0 вы можете и должны использовать Photos рамки вместо этого. вы должны импортировать его ...

@import Photos;

и изменить метод getImageFromAssetsAtURL... к следующему:

PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[imageURL] options:nil]; 
    if (result.count == 1) { 
    PHAsset *asset = result.firstObject; 
    [[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) { 
     UIImage *selectedImage = [UIImage imageWithData:imageData]; 
     completion(selectedImage, nil); 
    }]; 
    } else { 
    completion(nil, nil); 
    } 
+0

Я делаю снимок с альбома, он уже есть. Когда я выбираю картинку, она появляется на моем изображенииПросмотреть приложение. Но когда приложение убито, изображение тоже исчезает. Я хочу, чтобы он был спасен. – mimpami

+0

Что вы подразумеваете под «когда я убиваю снимок приложения»? –

+0

Снимаю картину с альбома, она уже есть. Когда я выбираю картинку, она появляется на моем изображенииПросмотреть приложение. Но когда приложение убито, изображение тоже исчезает. Я хочу, чтобы он был спасен. – mimpami

0

Наконец, я использовал этот код.

- (недействительными) viewDidLoad {

[супер viewDidLoad];

[self loadDefaultImage]; 
} 
-void)viewDidAppear:(BOOL)animated 
{ 
    [self loadDefaultImage]; 
} 
- (IBAction)TakePic:(id)sender { 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 
    [picker dismissViewControllerAnimated:YES completion:NULL]; 
} 
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
     NSString *mediaType = info[UIImagePickerControllerMediaType]; 
     [self dismissViewControllerAnimated:YES completion:nil]; 

     if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { 
      UIImage *image = info[UIImagePickerControllerOriginalImage]; 

      //append filename to document directory url 
      NSURL *urlSave = [[self getDocumentsPathURL] URLByAppendingPathComponent:@"imagee"]; 

      //do something to previously taken image (in this case: delete it) 
      if ([[NSFileManager defaultManager] fileExistsAtPath:urlSave.path]) { 
       [[NSFileManager defaultManager] removeItemAtPath:urlSave.path error:nil]; 
      } 

      //save image to document directory 
      [UIImagePNGRepresentation(image) writeToFile:urlSave.path atomically:YES]; 

      //optional: save image to photo library 
      UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
     } 
} 
-(NSURL *)getDocumentsPathURL 
{ 
    //document directory of app 
    return [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil]; 
} 
-(void)loadDefaultImage 
{ 
    NSURL *urlImage = [[self getDocumentsPathURL] URLByAppendingPathComponent:@"imagee"]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:urlImage.path]) { 
     NSData *dataFile = [[NSFileManager defaultManager] contentsAtPath:urlImage.path]; 
     UIImage *image = [UIImage imageWithData:dataFile]; 

     [_imageView setImage:image]; 
    } 
    else { 
     NSLog(@"Image not found"); 
    } 
} 
Смежные вопросы