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 ポイントの空白があるためです。私は何を間違っていますか?