使用loadView创建视图时,视图的帧大小不会随轮换而改变

时间:2011-10-22 17:29:27

标签: iphone objective-c rotation loadview

我有没有xib的UIViewController,我正在使用loadView来构建我创建并添加两个滚动视图的UI。问题是,当旋转发生时,主视图框架大小不会改变。我的意思是,我在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上的宽度扩展到旋转到横向模式。我可以在shouldRotate中手动完成,只是好奇它应该如何以正确的方式完成。

1 个答案:

答案 0 :(得分:9)

我注意到self.view.frame大小没有改变,但是self.view.bounds在旋转时会发生变化,而bounds代表当前界面方向的正确值。