UIImagepickercontroller: можно ли изменить порядок сортировки изображений в фотоаппарате? - PullRequest
8 голосов
/ 16 октября 2010

В основном, приложение, над которым я работаю, было бы намного менее болезненным, если бы пользователям не приходилось прокручивать до самого конца своего рулона камеры, чтобы получить свои самые последние фотографии, я хочу, чтобы самые последние были вверху, не так ли?в любом случае это имеет смысл?Не уверен, почему Apple разработал это так, или если я просто что-то не понимаю.

Спасибо

Ник

Ответы [ 4 ]

9 голосов
/ 05 апреля 2012

Если вы не возражаете добавить дополнительный шаг выбора рулона камеры из списка альбомов, вы можете попробовать изменить свой sourceType с SavedPhotoAlbums на PhotoLibrary:

imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

После выбора нужного альбома на следующем экране выбора фотографий внизу будут показаны самые последние изображения.

8 голосов
/ 16 мая 2012

Это меня сильно раздражало - я так близок к реализации собственного пользовательского средства выбора изображений с помощью AssetsLibrary.

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

    [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];
        }
}];
4 голосов
/ 16 октября 2010

Нет способа настроить UIImagePickerController таким образом, но в iOS 4.0 вы можете в основном создавать свой собственный инструмент выбора изображений любым удобным для вас способом, используя AssetsLibrary Framework .

0 голосов
/ 12 августа 2014

Вы можете получать изображения, используя ALAsset в массиве, а затем сортировать их по своему усмотрению и использовать в табличном или коллекционном виде для создания своего собственного альбома

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...