UIScrollView не обновляется - PullRequest
       3

UIScrollView не обновляется

1 голос
/ 24 января 2012

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

Проблема в том, что фреймы подпредставлений обновляются, но не перерисовываются.

На данный момент я использую это для установки рамок при изменении ориентации:

- (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. Повторное добавление всех подпредставлений назад scrollView

Кажется, есть более чистый способ сделать это.

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

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

1 Ответ

0 голосов
/ 18 апреля 2012

для (UIView * просмотр в scrollView.subviews)

{
    if ([view isKindOfClass:[UIImageView class]]) 
    {
        [view removeFromSuperview];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...