在 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 上运行它时。我也试过了纵向模式下的比较,操作系统版本之间没有差异。
navBarHeight 似乎也是错误的——因为我的绿色 CALayer 对象在它和导航栏之间有大约 12 pts 的空白。我究竟做错了什么?