2016-03-25 4 views
0

У меня нет рабочей версии или идеи, как получить фотографии из ваших альбомов через PHPhotoLibrary или ALAssetsLibrary и установить их в uicollectionviewcell, как в instagram. Я новичок в Objective C :)Как сфотографировать фото с камеры

не установить - добавить

+0

может быть, я не прав был поставлен вопрос. Мне нужно заполнить фотографии UICollectionViewCell из альбома при открытии ViewController, не прибегая к ImagePicker, как это – m9st

ответ

4

Я не уверен, что вы имеете в виду под «установить в uicollectionviewcell», но вот как можно получить фотографии из альбома.

  1. Спросите разрешения
  2. Покажите UIImagePickerController (который по умолчанию изображение вида сборщика яблоко, созданный для нас)
  3. реализации методов делегата обрабатывать принимаемое изображение из UIImagePickerController

код будет выглядят следующим образом:

Оператор импорта:

#import <Photos/Photos.h> 

Инстанцировать контроллер сборщика изображения, чтобы показать:

UIImagePickerController* imagePicker = [[UIImagePickerController alloc]init]; 
// Check if image access is authorized 
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    // Use delegate methods to get result of photo library -- Look up UIImagePicker delegate methods 
    imagePicker.delegate = self; 
    [self presentViewController:imagePicker animated:true completion:nil]; 
} 

Я считаю, что это, как правило, запрашивает у пользователя для доступа к библиотеке фотографий, но это всегда хорошая практика, чтобы обрабатывать все случаи авторизации до просто пытаемся покажите imagepicker.

Спросите разрешение:

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; 
    if(status == PHAuthorizationStatusNotDetermined) { 
     // Request photo authorization 
     [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { 
      // User code (show imagepicker) 
    }]; 
    } else if (status == PHAuthorizationStatusAuthorized) { 
     // User code 
    } else if (status == PHAuthorizationStatusRestricted) { 
     // User code 
    } else if (status == PHAuthorizationStatusDenied) { 
     // User code 
    } 

Наконец реализовать методы делегата:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image = info[UIImagePickerControllerOriginalImage]; 
    // Do something with picked image 
} 

После вы выбираете изображение, вы можете добавить его в недавно реализованный UICollectionViewController. Это, вероятно, еще один вопрос, и вам было бы лучше читать документацию для этого. Обратите внимание, что это было введено в IOS8 (я думаю?), Но код маршрута AL будет похож на приведенный выше.


Добавлено

Фото библиотека просто другая база данных, но вы все равно должны спросить у пользователя разрешения. шагов будут выглядеть следующим образом:

  1. Спросите разрешения
  2. Получить фотографии из библиотеки фотографий

Я не сделал # 2 сами, но там, кажется, способ сделать это.

Get all of the pictures from an iPhone photoLibrary in an array using AssetsLibrary framework?

Из беглого взгляда, кажется, что это асинхронная функция, так что вы должны кодировать соответствующим образом (я бы вызвать функцию requestImage внутри каждый UICollectionViewCell, если я вам).

Оставьте комментарий, если вы столкнулись с какими-либо проблемами. Удачи!

+0

, может быть, я не прав, задал вопрос. Мне нужно заполнить фотографии UICollectionViewCell из альбома при открытии ViewController, не прибегая к ImagePicker [как это] (https://pp.vk.me/c630917/v630917473/23494/3GpCH5S502M.jpg) – m9st

+0

спасибо, я понимаю, как это работает)) – m9st

+0

если не сложнее, объясните, как добавить изображение за раз в ячейки, потому что мой код плох)) [1-я часть] (https://pp.vk.me/c631129/v631129473/24a93/sEra0zWN23s.jpg) [2-я часть] (https://pp.vk.me/c631129/v631129473/24a9d/G6l3ULctLEo.jpg) – m9st

0

Вы должны объявить делегат UIImagePickerControllerDelegate

как это ..

надеюсь, что его помогает вам много ...

- (IBAction)captureImagehandler:(id)sender 
{ 
    if (! [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 

    UIAlertView *deviceNotFoundAlert = [[UIAlertView alloc] initWithTitle:@"No Device" message:@"Camera is not available" 
                  delegate:nil 
                cancelButtonTitle:@"exit" 
                 otherButtonTitles:nil]; 
    [deviceNotFoundAlert show]; 

} 
else 
{ 

    UIImagePickerController *cameraPicker = [[UIImagePickerController alloc] init]; 
    cameraPicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    cameraPicker.delegate =self; 
    // Show image picker 
    [self presentViewController:cameraPicker animated:YES completion:nil]; 
} 
} 
+0

Этот фрагмент испорчен, он не делает то, что задает вопрос. –

Смежные вопросы