View Frame与IOS 4.3和IOS 5.1不同 - 为什么?

时间:2012-05-24 20:44:56

标签: ios

在viewController的主视图中布局CALayer对象时,我发现IOS 43.和5.1之间存在差异

我在横向模式下运行。我想要一个宽40磅的CALayer对象,显示在左上角 - 与导航栏和屏幕的整个高度对接(减去导航栏)。状态栏已禁用。我计算图层的高度作为视图的高度减去导航栏的高度。

在viewController的viewDidLoad中,我有以下代码....

[[UIApplication sharedApplication] setStatusBarHidden:YES];
CGRect viewFrame = self.view.frame;
float navBarHeight = self.navigationController.navigationBar.frame.size.height;

CGRect f = CGRectMake( 0, navBarHeight, 40, viewFrame.size.height - navBarHeight);
leftLayer = [[CALayer alloc] init];
leftLayer.frame = f;
leftLayer.backgroundColor = [UIColor greenColor].CGColor;  // for debug
[self.view.layer addSublayer:leftLayer];

当我在5.1 viewFrame =(0,0,480,288)和navBarHeight = 32上运行时。当我在4.3 viewFrame =(0,0,480,320)和navBarHeight = 32上运行时。我已经在纵向模式下尝试相同的比较,OS版本之间没有差异。

navBarHeight似乎也错了 - 因为我的绿色CALayer对象在它和导航栏之间有大约12个白色空间。我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用viewWillAppear方法调整帧时,我有更好的运气,因为此时视图的大小已根据方向调整。你在那个方法中有同样的问题吗?