У меня есть UIScrollView, который содержит кучу subviews. Если представление первоначально загружено в альбомной или портретной ориентации, то в каждом из них все прекрасно. Однако, когда я пытаюсь справиться с изменениями ориентации, ничего не происходит.UIScrollView не обновляется
Я считаю, что проблема заключается в том, что кадры subviews обновляются, но не перерисовываются.
Я использую это как сейчас, чтобы установить рамки на изменения ориентации:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
int i = 0;
for(UIView *subview in [scroll subviews]) {
if([subview isKindOfClass:[GalleryThumbContainerView class]]) {
[subview setFrame:[self getFrameLandscape:i]];
i++;
} else {
}
}
}
Если устройство находится в портретном и поворачивать его в ландшафтной ни один из подвидов новые кадры обновляются.
Если я сохраняю устройство на портрете и оставляю представление, вернитесь назад, все новые кадры обновляются.
Это заставляет меня думать, что это некоторая проблема с тем, что набор не обновляется. Я пробовал:
[self.view setNeedsDisplay];
[self.view setNeedsLayout];
[self.scroll setNeedsDisplay];
[self.scroll setNeedsLayout];
Ни один из них не работает.
мне удалось «сделать» его работу по:
- Удаление всех подвидов на Scrollview
- Установка всех подвидов новый кадр
- Re-Добавление всех подвидов назад Scrollview
Существует, пожалуй, более чистый способ сделать это.
Я также попытался добавить прослушиватель смены ориентации в подкласс subviews (полный рот) и сохранить каждый ландшафт ландшафта и портрета. Затем переключение слушателем. Что это тоже не сработало.
Любая помощь очень ценится и благодарит вас за ваше время.
насчет установки режима со всеми вашими взглядами контента UIViewContentModeRedraw? http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html –
Вы также меняете размер ScrollView на изменение интерфейса? – alex
@alex Да, я. – random