TTPhotoViewController: отключить автоматическое увеличение галереи - PullRequest
3 голосов
/ 24 января 2011

В своем проекте я использую Facebook API «three20»: https://github.com/facebook/three20/

Теперь мне нужно настроить TTPhotoViewController.В галерее есть «авто зум».Всегда используются полная ширина и высота: enter image description here

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

Как отключитьавтоматический зум?

Спасибо!


РЕДАКТИРОВАТЬ 03-Mar-2011:

Ответ Романа кажется хорошим, но, к сожалению, он мне не помогает.Да, проблема в режиме содержимого UIViewContentModeScaleAspectFill:

Масштабирование содержимого в соответствии с размером представления.Некоторая часть содержимого может быть обрезана, чтобы заполнить границы представления.

Но нет другого режима содержимого, который решает мою проблему.Я думаю, мне нужно заглянуть глубоко в три и масштабировать изображения самостоятельно.Но мне нужна твоя помощь, чтобы сделать это!Итак, я начну новую «награду» сегодня (03.03.2011) ...

Большое спасибо !!


РЕДАКТИРОВАТЬ 07-Mar-2011:

Наконец-то я понял !!римский ответ правильный, я должен использовать UIViewContentModeScaleAspectFit.

Проблема была: я использовал неправильный размер в моем Photo -объекте!У меня сработало 320х480:

NSMutableArray *photos = [NSMutableArray new];

for (Information *info in allImages) {
    NSString *binaryId = info.binary;

    NSString *fileName = [NSString stringWithFormat:@"documents://img/%@.jpg", binaryId];

    Photo *photo = [[[Photo alloc] initWithCaption:info.name 
                                              urlLarge:fileName 
                                              urlSmall:fileName 
                                              urlThumb:fileName 
                                              size:CGSizeMake(320, 480)] autorelease];

    [photos addObject:photo];

}

self.photoSource = [[PhotoSet alloc] initWithTitle:@"Photos" photos:photos];

Ответы [ 3 ]

6 голосов
/ 24 января 2011

Самый простой способ - взломать TTPhotoView - вокруг строки 135 (функция setImage) изменить

self.contentMode = UIViewContentModeScaleAspectFill;

на

self.contentMode = UIViewContentModeScaleAspectFit;

К сожалению, в настоящее время, похоже, нет другого пути.

3 голосов
/ 23 февраля 2011

Вы должны передать свой вопрос Роману, потому что он отвечает на ваш конкретный вопрос, но я хочу предложить вам не использовать three20 и самостоятельно внедрить скроллер изображений.Взгляните на Session 104, Проектирование приложений с использованием прокрутки (требуется вход в ADC) из видео сессий WWDC 2010 на iTunes.В нем подробно рассказывается, как реализовать этот тип интерфейса, и вы сможете поддерживать свое приложение в тонком состоянии, не добавляя в код всю библиотеку Three20.

0 голосов
/ 05 марта 2011

Сделайте это изменение в TTScrollView class

В методе

- (CGRect)frameOfPageAtIndex:(NSInteger)pageIndex 

В этом методе измените следующую строку

if (size.width > size.height) { 

на

if (size.width / size.height > self.width / self.height) { 

Это сработало для меня.

...