#iphone #uitabbarcontroller
#iPhone #uitabbarcontroller
Вопрос:
У меня есть TabBarController с 4 представлениями. Я хотел, чтобы второй вид вращался, поэтому я добавил
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
для всех моих 4 ViewControllers. Теперь каждый вид может вращаться, и это хорошо.
Второе представление отлично работает при вращении, оно очень хорошо обрабатывает изменение размера и перерисовку его содержимого. (пока другие представления вращаются, но не обновляют свое содержимое, я буду работать над этим)
Проблема в том, что, если я остаюсь в первом представлении, поворачиваю телефон, а затем перехожу ко второму представлению, все содержимое изменяется странным образом.
Например, у меня есть ScrollView на втором представлении, охватывающий весь экран. Когда я поворачиваю телефон, оставаясь во втором режиме просмотра, он изменяет размер scrollview в соответствии с альбомной ориентацией экрана, все в порядке. Но если я поворачиваю телефон, оставаясь в первом представлении (или в третьем, или в четвертом), вид прокрутки становится маленьким, меньше половины экрана.
Для изменения размера и перерисовки содержимого я использую:
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self adjustViewsForOrientation:toInterfaceOrientation]; }
- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
if (orientation == UIInterfaceOrientationLandscapeLeft ||
orientation == UIInterfaceOrientationLandscapeRight) {
sfondo.frame = CGRectMake(0, 0, 480, 260);
scrollView.frame = CGRectMake(0, 0, 480, 250);
scrollView.contentSize = CGSizeMake(480,1000);
for (int i=0; i<3; i ) {
[[grafici objectAtIndex:i] landscapeMode:TRUE];
}
}
else if (orientation == UIInterfaceOrientationPortrait ||
orientation == UIInterfaceOrientationPortraitUpsideDown) {
sfondo.frame = CGRectMake(0, 0, 320, 411);
scrollView.frame = CGRectMake(0, 0, 320, 411);
scrollView.contentSize = CGSizeMake(320,1100);
for (int i=0; i<3; i ) {
[[grafici objectAtIndex:i] landscapeMode:FALSE];
}
}
}
Ответ №1:
Я обнаружил, что проблемы возникали из-за того, что я установил свой scrollview и другие параметры из Interface Builder.
Выполнение этого программным путем решило мою проблему!