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];
}
}];
zu bauen, das Gleichgewicht geraten ist, nur zu sagen. Danke, Mann. – nickthedude