2010-10-16 7 views

Antwort

4

Es gibt keine Möglichkeit UIImagePickerController auf diese Weise zu gestalten, sondern als von iOS 4.0, Sie können Ihr eigenes Bild Picker in irgendeiner Weise Sie im Grunde bauen wie die AssetsLibrary framework verwenden.

+0

zu bauen, das Gleichgewicht geraten ist, nur zu sagen. Danke, Mann. – nickthedude

9

Wenn Sie nichts dagegen haben einen zusätzlichen Schritt des Auswählens der Kamerarolle aus einem Album-Liste hinzufügen können Sie versuchen, Ihre source von SavedPhotoAlbums zu Photolibrary Wechsel:

imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

Nachdem das gewünschte Album auszuwählen, das nächste Foto In der Auswahlansicht werden die neuesten Bilder unten angezeigt.

+0

danke dafür! die Tatsache, dass es von den neuesten beginnt, scheint nirgends dokumentiert zu sein, also hast du mir eine Menge Zeit erspart :) – Dima

+0

danke, ich habe nie darauf geachtet. War das früher funktioniert? Ich erinnere mich, dass ich das nicht vor 1/2 Jahren gefunden habe. Zu diesem Zeitpunkt ist die Lösung AssetLibrary zu verwenden. Zum Glück habe ich dieses Mal wieder gegoogelt und deinen Tipp gefunden. Schätzen/ –

+0

Dies ist der richtige Weg, um das Problem zu behandeln. Großartige Arbeit beim Lesen der Dokumentation haha ​​ – i2097i

8

Das hat mich sehr geärgert - ich bin so nah dran, meine eigene Bildauswahl mit AssetsLibrary zu implementieren.

Aber in der Zwischenzeit funktionierte dieser Hack für mich - ich zeige den Picker an, suche nach der Scroll-Ansicht in der View-Hierarchie und scrollte ihn bis zum Ende, mehr oder weniger. Es muss animiert werden, wie dies geschieht, wenn die Ansicht bereits geladen ist - aber es ist immer noch besser als der Benutzer, der durch 5.000 Fotos scrollen muss, bis sie zu den neuesten gelangen.

[self presentViewController:self.imagePickerController animated:YES completion:^() { 
     // scroll to the end - hack 
     UIView *imagePickerView = imagePickerController.view; 

     UIView *view = [imagePickerView hitTest:CGPointMake(5,5) withEvent:nil]; 
     while (![view isKindOfClass:[UIScrollView class]] && view != nil) { 
     // note: in iOS 5, the hit test view is already the scroll view. I don't want to rely on that though, who knows 
     // what Apple might do with the ImagePickerController view structure. Searching backwards from the hit view 
     // should always work though. 
     //NSLog(@"passing %@", view); 
      view = [view superview]; 
     } 

     if ([view isKindOfClass:[UIScrollView class]]) { 
      //NSLog(@"got a scroller!"); 
      UIScrollView *scrollView = (UIScrollView *) view; 
      // check what it is scrolled to - this is the location of the initial display - very important as the image picker 
      // actually slides under the navigation bar, but if there's only a few images we don't want this to happen. 
      // The initial location is determined by status bar height and nav bar height - just get it from the picker 
      CGPoint contentOffset = scrollView.contentOffset; 
      CGFloat y = MAX(contentOffset.y, [scrollView contentSize].height-scrollView.frame.size.height); 
      CGPoint bottomOffset = CGPointMake(0, y); 
      [scrollView setContentOffset:bottomOffset animated:YES]; 
     } 
}]; 
+1

Wer auf der Erde hat das abgelehnt? Funktioniert perfekt für mich. Vielen Dank @n13! –

+0

das funktioniert nicht für mich – SarpErdag

+0

funktioniert wie ein Juwel! –

0

Sie können Bilder erhalten, mit ALAsset in einem arry, und dann können sortieren sie, wie Sie wollen und Tabellenansicht oder Kollektion verwenden in Ihrem eigenen Album

Verwandte Themen