проблема с размером содержимого прокрутки на iPad в альбомной ориентации

В viewdidload у меня есть этот код:

[methodPanes setContentSize:CGSizeMake(numberOfPages*methodPanes.frame.size.width, 100)];

Панели методов устанавливаются относительно ширины self.view.

Проблема в том, что если я загружаю вид из ландшафтного формата на iPad и NSLog methodPanes.frame.size.width, я получаю 648 (что явно неправильно).

Затем у меня есть кнопка, которая, когда я нажимаю на нее, снова NSLogs methodPanes.frame.size.width после отображения представления. Теперь это 924 (скорее так).

Я предполагаю, что по какой-то причине прокрутка загружается с шириной 648, а затем автоматически изменяется до ширины представления (для него установлено значение UIViewAutoresizingFlexibleWidth для правильного изменения размера при повороте ipad).

Моя проблема в том, что размер содержимого моего содержимого прокрутки methodPanes должен быть numberOfPages x its frame width, но в viewDidLoad он дает мне неправильный размер для ширины кадра моего methodPanes, что означает, что мой размер содержимого слишком мал, что означает, что весь мой контент не отображается.

Итак..... как я могу это решить? Есть ли функция, которая запускается после того, как ВСЕ компоненты пользовательского интерфейса были загружены и перестали перемещаться? Или я могу «проверить» на methodPanes, чтобы увидеть, изменяется ли его ширина, а затем соответствующим образом настроить размер содержимого?

Спасибо


person Thomas Clayson    schedule 10.11.2010    source источник


Ответы (1)


Получите ширину после запуска цикла выполнения. К тому времени размеры вида будут обновлены для ориентации. Обычно этого достаточно:

- (void)adjustContentSize {
    [methodPanes setContentSize:CGSizeMake(numberOfPages*methodPanes.frame.size.width, 100)];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self performSelector:@selector(adjustContentSize) withObject:nil afterDelay:0.0];
}
person Chris Miles    schedule 01.03.2011
comment
Я не могу дать вам больше +1 :( - person Lescai Ionel; 08.04.2013