2016-03-25 14 views
0

Ich habe keine funktionierende Version oder Idee, wie Sie Fotos von Ihren Alben über PHPhotoLibrary oder ALAssentsLibrary erhalten und sie in uicollectionviewcell wie in Instagram installieren. Ich bin neu in Objective-C :)So wählen Sie ein Foto aus der Kamerarolle

nicht installieren - add

+0

vielleicht bin ich nicht recht die Frage gestellt. Ich muss UICollectionViewCell Fotos aus einem Album füllen, wenn ViewController öffnet, ohne auf ImagePicker so zu gehen – m9st

Antwort

4

Ich bin nicht sicher, was Sie unter ‚installieren, um uicollectionviewcell‘, aber hier, wie Sie Fotos von Ihrem Album bekommen würden.

  1. Fordern Sie Genehmigung
  2. zeigen ein UIImagePickerController (die die für uns geschaffen Picker Ansicht Apfel Standardbild ist)
  3. Delegatmethoden Implementieren des aufgenommenen Bildes von der UIImagePickerController

Code würde zu handhaben wie folgt aussehen

Einfuhrabrechnung:

#import <Photos/Photos.h> 

Instantiate das Bild Picker-Controller zu zeigen:

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]; 
} 

Ich glaube, dies in der Regel der Benutzer für den Zugriff auf die Foto-Bibliothek aufgefordert würde, aber es ist immer ratsam, alle Fälle von Genehmigung zu behandeln, bevor einfach versuchen, zeige den Bildpicker.

Fordern Sie Genehmigung:

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 
    } 

Schließlich Delegatmethoden implementieren:

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

Nachdem Sie Ihr Bild auswählen, können Sie es zu einem neu instanziiert UICollectionViewController hinzufügen können. Dies ist wahrscheinlich eine ganz andere Frage und Sie würden besser Unterlagen dafür lesen. Beachten Sie, dass dies in IOS8 eingeführt wurde (denke ich?), Aber der AL-Route-Code wird dem oben genannten ähnlich sein.


Added

Die Foto-Bibliothek ist nur eine andere Datenbank, aber Sie haben noch den Benutzer zur Genehmigung fragen. Die Schritte würden wie folgt:

  1. Zulassungs Stellen Sie
  2. Abrufen von Fotos von Foto-Bibliothek

Ich habe nicht # 2 selbst getan, aber es scheint ein Weg zu sein, es zu tun.

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

Aus einem flüchtigen Blick scheint es, wie dies eine asynchrone Funktion, so dass Sie entsprechend Code sollte (ich würde in jedem UICollectionViewCell die requestImage Funktion aufrufen, wenn ich Sie wäre).

Hinterlassen Sie einen Kommentar, wenn Sie irgendwelche Probleme auftreten. Viel Glück!

+0

vielleicht bin ich nicht richtig gestellt die Frage. Ich muss UICollectionViewCell Fotos aus einem Album füllen, wenn ViewController öffnet, ohne auf ImagePicker [wie dieses] (https://pp.vk.me/c630917/v630917473/23494/3GpCH5S502M.jpg) – m9st

+0

zurückzugreifen, danke ich verstehe, wie es funktioniert)) – m9st

+0

wenn nicht schwieriger, erklären, wie man ein Bild zu einem Zeitpunkt in den Zellen hinzufügen, weil mein Code schlecht ist)) [1. Teil] (https://pp.vk.me/c631129/v631129473/24a93/sEra0zWN23s.jpg) [2. Teil] (https://pp.vk.me/c631129/v631129473/24a9d/G6l3ULctLEo.jpg) – m9st

0

Sie benötigen Delegierten UIImagePickerControllerDelegate

wie diese zu erklären ..

hoffen seine hilft Ihnen viel ...

- (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

Dieses Snippet ist durcheinander, es tut nicht, was die Frage fragt. –

Verwandte Themen