АВТОРОТАЦИЯ НА ГАЛЕРЕЯ - Уиллиматорность ... не вызывается
-
26-09-2019 - |
Вопрос
я использую это.
Я положил это, где добавляются изображения:
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.