質問1:
UIView の正しいサイズを取得するにはどうすればよいですか?
タイル レイヤーを使用していくつかの画像を表示する CGRect を作成しています。CGRect を作成するときは、基本的に UIView とまったく同じサイズにする必要があります。これは非常に難しいことが判明しました.. NSLog() で mymainView.bounds.size.width
または mymainView.frame.size.width
をアウトすると、ランドスケープでは常に間違っています! 実際のビューがより広いことがわかりますが、常にポートレートであるかのように値をログアウトします。また、それらを逆にすることも間違っています。横向きの場合、幅を高さに設定するだけでは十分ではありません。適切な値が必要です。
正しく見えるようにする唯一の方法は、横向きの場合に手動で幅を 1024 に設定することですが、これも常に機能するとは限りません。
質問2:
デバイスが横向きかどうかを確認する正しい方法は何ですか?
使ってきました
if([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight)
しかし、これは常に機能するとは限りません。起動時にデバイスを横向きモードにすると正しいですが、横向きにすると、ダッシュボードを横向きのままにしてiPadを平らに置き、起動すると、横向きのスプラッシュが表示されますが、そのコードは考えます縦長です。そのコードは、iPad シミュレーターでもまったく機能しません。
編集
何らかの理由で、横向きのサポートを追加することにしたとき、ターゲットの概要ページで横向きを確認するだけでは十分ではなく、TabBarController を実際にサブクラス化し、物理的に回転するように指示する必要がありました。と
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return YES;
}
私はこれをする必要はありません..そうですか?そのような空のプロジェクトを作成した場合、それは必要ありません..理由はわかりません。