АВТОРОТАЦИЯ НА ГАЛЕРЕЯ - Уиллиматорность ... не вызывается

StackOverflow https://stackoverflow.com/questions/4012797

Вопрос

я использую это.

Я положил это, где добавляются изображения:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Я положил эти переопределения в SlideshowViewController:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

Первый называется, но не второй.

Я не использую ниб; Он использует пользовательский init, который возвращает Self.View с 3 изображениями на нем.

Я что-то пропустил? Что было бы лучшим способом изменить этот скрипт, чтобы получить пейзажные фотографии растягиваться на полную ширину, когда iPhone вращается пользователем?

Редактировать: Просто попытался добавить Willanimate ... в контроллер корневого просмотра моего навигацииController, но он не вызывает. Возможно, навигация сопредрителя - проблема? В этом случае, где я поставил Willanimate ...? В качестве альтернативы, как получить и передавать сообщения, отправленные ему по отношению к видимым ViewController?

Редактировать 2: Причина ошибки в теме было то, что TabBarController отсутствовал соединение в IB (который я был уверен, что был там). Так что теперь моя проблема такая же, как для нескольких других подобных вопросов - Willanimate ... называется в корневом VC, но не в толкающих VCS. Код, который я использовал исчезает в галерее VC, а не скользить, то есть. Он не толкает, но в настоящее время добавляется в виде подсчета к окну - заполнить весь дисплей.

Предложения о том, как сообщать о том, чтобы контроллер подваи к установлению кадров будет оценен или альтернативные решения!

Это было полезно?

Решение

Это не ответ на то, почему ваша «Willanimatorotation ..» - метод не запускает, а вместо этого альтернатива на то, как галерея изображения может адаптироваться к самому вращению.

В INITWITHIMAGES Добавить:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

Добавьте этот метод для получения уведомления. В Дидротате вы можете обрабатывать размер перемещения перемещения изображений.

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

Не забудьте отменить регистрацию уведомления в Dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

Могу ли я также предположить, что вы используете UiscrollView вместо обработки прокрутки и жесты самостоятельно?

Другие советы

SlideshowViewController нажал непосредственно на стек навигационного контроллера или его часть другого представления? Методы делегата UIView получают вроде испорченные при работе с подсюдами на представлениях на стеке навигационного контроллера.

Если SLIDESHOWVIVECONTROLLER - это просто субвезонный другой вид, который был нажат на стек навигационного контроллера, я бы попытался прослушать этот метод в контроллере представления, который на самом деле на навигационном стеке контроллера навигации, а затем вызова подходящего метода в SlideshowViewController оттуда Отказ

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

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

Этот вопрос был немного сложным, чтобы ответить, что я думаю, поскольку это было о моем конкретном нерудиментарном приложении. Извините за то, что позволил запустить время заканчиваться, он был в основном слишком поздно в тот же день, который я спросил;)

Я думал, что я опубликую это «не похороненным в комментариях» для всех, кто получает те же симптомы.

Во-первых, я заметил, что Iboutlet, который я уверен, что подключил к одной точке, больше не был подключен (Tab Bar Controller -> объект TabbarController). Поскольку я был стоять мозги и переместила вещи, чтобы сделать эту работу, это, вероятно, было из-за меня попробовать что-то, а затем восстановить резервную копию.

Вторая часть решения состояла в добавлении представления галереи в представлении TabBarController вместо навигации - для просмотра. Затем были вызваны методы View View Controller ... и методы Willauto.

(Чтобы скрыть полосу вкладки и навигационную панель во время вращения, я должен был установить их .Alpha до 0, в то время как отображается галерея, в противном случае навигационная - для просмотра была частично скрыта под панелью навигации при возврате к нему. Я не нашел никакого способа скрывания строка состояния при показывать галерею.)

После этого произошла запрос на галерею в представлении детализации, навигацию с другой вкладки, и я получил сложную ошибку, что только в то время как другая (работающая) представление детализации была показана под другой вкладкой, будет автоматически работать с новым галерея. Вернусь к решению этого, время Quittin.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top