У меня есть очень простое UIScrollView
пример, который просто не делает то, что он, как предполагается. Не уверенный, если это - ошибка с API или ошибка в моем коде.
В основном у меня есть a UIViewController
с a UIScrollView
поскольку это - представление. Когда я добавляю его к UIWindow
и измените ориентацию iPad, я выхожу из системы UIScrollView
s размер, о котором неправильно(?) сообщают.
Вот мой UIViewController
реализация:
@implementation CustomViewController
- (void)loadView {
scrollView = [[[UIScrollView alloc] init] autorelease];
scrollView.delegate = self;
scrollView.backgroundColor = [UIColor redColor];
self.view = scrollView;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
CGSize rect = scrollView.frame.size;
NSLog(@"will rotate w%f h%f", rect.width, rect.height);
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
CGSize rect = scrollView.frame.size;
NSLog(@"will animate rotation w%f h%f", rect.width, rect.height);
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGSize rect = scrollView.frame.size;
NSLog(@"did rotate w%f h%f", rect.width, rect.height);
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end
Когда я выполняю вышеупомянутый код, я вижу следующие записи в своей консоли:
2010-07-11 11:03:05.214 Untitled2[6682:207] will rotate w768.000000 h1004.000000
2010-07-11 11:03:05.214 Untitled2[6682:207] will animate rotation w748.000000 h1024.000000
2010-07-11 11:03:05.619 Untitled2[6682:207] did rotate w748.000000 h1024.000000
2010-07-11 11:03:07.951 Untitled2[6682:207] will rotate w748.000000 h1024.000000
2010-07-11 11:03:07.958 Untitled2[6682:207] will animate rotation w768.000000 h1004.000000
2010-07-11 11:03:08.367 Untitled2[6682:207] did rotate w768.000000 h1004.000000
Как Вы видите, изменения ориентации действительно изменяет размер UIScrollView
, но только позволить новую строку состояния. Я ожидал бы, что ширина и высота решительно изменяются, как UIScrollView
то, как шире, чем он высоко и наоборот.
Есть ли способ добраться UIScrollView
для создания отчетов это - реальный размер?
Представления не будут автоматически изменять размер при изменении размера их суперпредставлений, если вы специально не установили их. Для этого вида прокрутки вам нужно будет указать ему, чтобы он изменил его ширину и высоту, когда это сделает его супервизор.
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;