2012-09-25 6 views
9

iOS 6.0 SDKに対してiPadアプリをビルドした後、私のUISplitViewControllerの詳細ビューでこの奇妙な動作が発生します。詳細ビューは、20ピクセル(ポイント/ 40ピクセル)の位置に配置する必要があります。ここでXcode 4.5のiOS 6 SDKをビルドしたときに、20ピクセルを表示する

enter image description here

それは5.1の下でどのように見えるかです:

、Interface BuilderでDetailViewController_iPad.xibについては

enter image description here

私はNoneに模擬メトリック>トップバーを設定しました。これは役に立たなかった。 704

Height = 684;Width = 703;X = 0;Y = 0;

誰もがこれでの経験を持っている:これは、それがどうあるべきかの代わりに、684のように高さを記録します

- (void) viewDidLayoutSubviews { 
//.. etc 
NSLog(@"viewDidLayoutSubviews: %@", CGRectCreateDictionaryRepresentation(self.view.frame)); 
} 

: 私は、ビューのフレームを記録しました何か?次はどうしたらいいですか?

更新日:この問題は断続的に発生することがあり、一部のコンパイルではそれが原因で発生し、一部では発生しません。

誰かがこの問題を抱えていて、それを引き起こす原因が分かっていれば、私はまだ知りたいと思っています。

+0

同様の問題が発生しましたが、私のUIViewの背景イメージがあります。私は底に20ピクセルあります。 – Claus

+0

自動整形マスクを正しく設定しましたか? (柔軟な高さ、固定された上下の境界線) – deanWombourne

+0

@deanWombourneはい、私は無駄に、それをしました。 – MattyG

答えて

9

私は全く同じ問題を抱えていました。

ナビゲーションコントローラに別のビューコントローラがあり、このスプリットビューコントローラがアプリ起動時にアプリケーション:didFinishLaunchingWithOptions:のメソッドにプッシュされると、問題が発生します。私は

[self.navigationController pushViewController:splitViewController animated:NO]; 

dispatch_async(dispatch_get_main_queue(), ^{ 

    [self.navigationController pushViewController:splitViewController animated:NO]; 

}) 

代わりに使用splitViewControllerを押すと、私がなるだけiOS6そうでない場合は最初のビューのためにこれを使用し

これは私のために問題を修正しましたOS < iOS6で一時的に表示されます。

+0

このスキームはすべての条件で完璧に動作します\ m/ – Suhaiyl

+0

iOS 6(iOS 5はうまくいきました)のiPhoneで同様の問題が発生しましたが、起動時にNavigation Controllerにプッシュされたモーダルは半透明のステータスバーの後ろに表示されません。これで解決しました。ありがとう! –

1

[UIViewController statusBarHidden]は詳細コントローラのNOに設定されていますか?

+0

残念ながら。 – MattyG

+0

@MattyG試してみる価値がありました。 20pxは常にステータスバーで何かのように見えます。 – Sulthan

+0

ええ、ありがとう。私は同意する、それはステータスバーも関連しているようだ。そのため、シミュレートされた指標のステータスバーを削除しようとしました。私は今問題を診断するためにどのように進むのか分かりません。 – MattyG

1

Xcode 4.5には、あなたの悲しみの原因となる可能性のある自動レイアウトが適用される習慣があります。これを調べて選択を外してみてください。

+0

autolayoutは選択されていません。とにかくおかげさまで提案に感謝します。 – MattyG

2

私はあなたがコード内でビューのフレームを行うために何もしないと仮定していますが、正しいですか?すべてのレイアウトを行っているビューのコントローラーですか?もしそうなら、-wantsFullScreenLayoutで試してみましたか?

ビューコントローラがそのビューを表示すると、通常はそのビューが縮小され、そのフレームがデバイスのステータスバーと重ならないようになります。このプロパティをYESに設定すると、View Controllerは、ステータスバーの下の領域を含め、画面全体を塗りつぶすようにビューのサイズを調整します。 (もちろん、これが起こるには、ビュー・コントローラーをホストするウィンドウ自体が、ステータス・バーの下の領域を含めて、画面全体を満たす大きさでなければなりません)。半透明の状態あなたのビューの内容がそのビューの後ろに見えるようにします。

このプロパティがYESの場合、ビューはタブバーの下敷きになるようにサイズが変更されず、半透明のツールバーのアンダーラップにリサイズされます。このプロパティの値にかかわらず、ナビゲーションコントローラは、ビューが半透明のナビゲーションバーの下に常に表示されるようにします。

このプロパティのデフォルト値はNOです。これにより、ステータスバーの下に表示されないようにビューが配置されます。

あなたには、実際にはウィンドウのルートビューコントローラのみが影響するはずです。だから、これがあなたの問題を解決したら(あなたはあなたのView Controller階層で何かをやっていない)、Appleにバグを報告してください!

1

xibファイル内の高さのautosizngプロパティを設定しているか、プログラムでその値を設定しましたか?そうなら、それらを削除して問題の解決に役立つかどうか確認してください。

0

5月役立ちます。 私は同じ問題を抱えていましたが、私の例では表示サイズを小さくしていました。 iPhone Apps用のXIBで480ピクセルの高さを持ち、460ピクセルに縮小しました。 iPadと同じようにしてください。わかりませんが、参考になるかもしれません。

0

ViewWillAppearメソッドで別のviewcontrollerを表示しようとしたときに同じ問題が発生しました。 presentViewControllerコードをViewDidAppearメソッドに移動して解決しました。それが助けてくれることを願って。

関連する問題