2014-09-18 3 views
3

Мне было интересно, можно ли установить contentoffset для uiscrollview в режиме viewwillappear.UIScrollView Настройка contentoffset в viewwillappear не работает

-(void) viewWillAppear:(BOOL)animated{ 

    [self.scrollView setContentOffset:CGPointMake(320, 0) animated:YES]; 
    NSLog(@"CALLED");  
} 

Я вижу, что viewwillappear работает, но, к сожалению, он не устанавливает смещение.

Спасибо

+0

Что такое contentSize scrollView в методе viewWillAppear? Я думаю, что если contentSize.width меньше 320, то это не будет делать многое. –

+0

Размер содержимого: self.scrollView.contentSize = CGSizeMake (1230, 450); Но это устанавливается в методе viewdidload. Я только что попробовал поместить его в viewwillappear метод, но никаких изменений в поведении –

ответ

13

вы должны вызвать [super viewWillAppear:animated]; перед установкой смещения.

Однако, возможно, вы пытаетесь установить смещение слишком рано в жизненном цикле просмотра.

может быть полезно переопределить -(void)viewDidLayoutSubviews; и установить там смещение.

, так как к этому времени все кадры вашего представления должны быть установлены соответствующим образом. (не забудьте позвонить super там тоже)

+0

Спасибо, что так много сработало. –

+1

Обратите внимание, что viewDidLayoutSubviews можно вызвать несколько раз, что может вызвать настройку contentOffset, когда вы этого не хотите. Вам нужно будет отслеживать состояние вашего представления, если вы идете по этому маршруту. – Squatch

0

Я протестировал с вашим содержимым scrollViewSize & contentOffset in viewWillAppear. Он отлично работает для меня. Итак, проверьте погоду на ваш scrollView объект должным образом связан с вашим scrollView или нет.

Смежные вопросы