0

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

4

1 に答える 1

0

viewWillAppear メソッドを使用してフレームを調整すると、運が良くなります。それまでに、ビューのサイズが向きに合わせて調整されているからです。その方法で同じ問題がありますか?

于 2012-05-24T20:57:09.617 に答える