Размер кадра представления не изменяется при вращении, когда представление создается с помощью loadView. - PullRequest
3 голосов
/ 22 октября 2011

У меня 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 Ответ

9 голосов
/ 25 октября 2011

Я заметил, что размер self.view.frame не изменяется, а self.view.bounds влияет на вращение, а границы представляют правильные значения относительно текущей ориентации интерфейса.

...