Размер кадра представления не изменяется при вращении, когда представление создается с помощью loadView.
У меня есть UIViewController без xib, и я использую loadView для создания своего пользовательского интерфейса, который создает и добавляет два вида прокрутки. Дело в том, что размер кадра основного вида не меняется при повороте. Я имею в виду, я устанавливаю начальный размер кадра для основного вида в loadView (портретный режим: размер кадра ширина = 320, высота = 480). После поворота в альбомную ориентацию размер основного кадра вида не меняется и остается таким же, как в портретном режиме. Вот мой loadView:
-(void)loadView{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
self.view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height)] autorelease];
self.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
self.scrollView1 = [[[UIScrollView alloc] init] autorelease];
self.scrollView1.frame = CGRectMake...
[self.view addSubview:self.scrollView1];
self.scrollView2 = [[[UIScrollView alloc] init] autorelease];
self.scrollView2.frame = CGRectMake...
[self.view addSubview:self.scrollView2];
Я также установил autoresizingMask для увеличения или уменьшения представления, чтобы соответствовать экрану. Но я получаю те же значения ширины и высоты при отладке, что и в консоли. Мне нужно получить новый размер, потому что мне нужно изменить положение моих двух scrollViews, когда происходит вращение, например, чтобы уменьшить высоту и увеличить ширину scrollViews при повороте в ландшафтный режим. Я мог бы сделать вручную в mustRotate, просто любопытно, как это должно быть сделано правильно.
1 ответ
Я заметил, что размер self.view.frame не изменяется, но self.view.bounds влияет на вращение, а bounds представляют правильные значения относительно текущей ориентации интерфейса.