2012-01-23 1 views
1

У меня есть 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]; 

Ни один из них не работает.

мне удалось «сделать» его работу по:

  1. Удаление всех подвидов на Scrollview
  2. Установка всех подвидов новый кадр
  3. Re-Добавление всех подвидов назад Scrollview

Существует, пожалуй, более чистый способ сделать это.

Я также попытался добавить прослушиватель смены ориентации в подкласс subviews (полный рот) и сохранить каждый ландшафт ландшафта и портрета. Затем переключение слушателем. Что это тоже не сработало.

Любая помощь очень ценится и благодарит вас за ваше время.

+0

насчет установки режима со всеми вашими взглядами контента UIViewContentModeRedraw? http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html –

+0

Вы также меняете размер ScrollView на изменение интерфейса? – alex

+0

@alex Да, я. – random

ответ

0

для (UIView * зрения в scrollView.subviews)

{ 
    if ([view isKindOfClass:[UIImageView class]]) 
    { 
     [view removeFromSuperview]; 
    } 
} 
Смежные вопросы