10

ビューコントローラと、ポートレートとランドスケープ用の個別のnibファイルがあります。回転させて、それぞれのペン先をロードします。メソッド

 shouldAutorotateToInterfaceOrientation and willRotateToInterfaceOrientation

呼び出されると、ペン先が変わります。

問題:

the landscape nib does not appear as landscape, but portrait! The status bar is
correctly rotated and appears on the top:
(Sorry, couldn't paste the image, because my account is new. The screenshot is in   
landscape, with a landscape status bar, but a landscape view shown as portrait.)

問題は、ビューのIBシミュレートされたメトリックで方向を横向きに設定しないことにあると思われますが、私はそれを実行し、ビューはIBで横向きとして表示されます。(ビューが縦向きの場合、そのような回転ボタンを作成することさえできないと思います。)これらの2つのペン先の他に、アプリデリゲート、ウィンドウ、およびビューコントローラーオブジェクトを含むmainwindow.xibがあります。

編集:ビューが「立ち上がる」必要があるときに、ビューが実際に回転していることに気付きました。余分な変化があるようなものです。電話を右に90度回転させると、横向きのxibが右に90度回転して表示されます。電話をさらに90°右に回転させると、縦向きのxibが上下逆に表示されます。ステータスバーは常に上部に正しく表示されます。

EDIT2:使用

self.view.transform = CGAffineTransformMakeRotation((M_PI * (90) / 180.0));

willRotateToInterfaceOrientationでは、ビューを左の横向き(および任意の方向)に回転できるため、回避策として使用できます。ただし、ビューが自動的に回転し、CGAffineTransformMakeRotationを使用する必要がない他のプロジェクトがあります。ここで何かが自動回転を妨げているようです。

4

2 に答える 2

0

viewnib からロードされたものを subView として追加していますか? ステータス バーのみが回転している場合は、ビューを解放して新しいビューを追加しているときに、以前のビューがハングしていることを意味します。ロードされたビューを SuperView に追加する方法を教えてくださいxib

他のビューをロードしている間に前のビューを正しく解放していることを確認しNSLOG、ビューの割り当てを解除して、ビューが完全に解放されているかどうかを確認します。

于 2012-08-28T10:36:50.197 に答える