インターフェイス ビルダーで uitableview を 4 インチの iphone5 および古い iPhone 4/4s と互換性を持たせるにはどうすればよいですか?
Xcode 4.5 には 3 つのオプションがあります。
- フリーフォーム
- Retina 3.5 フルスクリーン
- Retina 4 フルスクリーン
Retina 4 を選択した場合、3.5 インチの電話では画面の境界を越えたりオーバーフローしたりします
コードを使用して、それに応じてフレームを設定できますが、インターフェイス ビルダーを使用する用途は何ですか?
Interface Builderを使用してどのように行うべきですか?
編集
私の質問は、iPhone 5 Retina 4 インチ画面についてです。ステータスバーとナビゲーションバーがあるビューのサイズを調べると、freeform/none/retina 3.5 を選択した場合の self.view.frame.size.height/width, frame 320.000000 x 416.000000 の値は次のとおりです。
自動サイズ変更オプションは、ビューがすべての方向に拡大するように設定されています。つまり、すべてのストラットとスプリングが有効になっています。
EDIT iOS6シミュレーターでテストする場合、コードで次のように設定すると
self.tableView.frame = CGRectMake(0, 0, 320, 546);
self.tableView.bounds = CGRectMake(0, 0, 320, 546);
self.view.frame = CGRectMake(0, 0, 320, 546);
self.view.bounds = CGRectMake(0, 0, 320, 546);
NSLog(@"%2f - %2f", self.view.bounds.size.width, self.view.bounds.size.height);
NSLog(@"%2f - %2f", self.tableView.bounds.size.width, self.tableView.bounds.size.height);
次の出力が得られます
320.000000 - 546.000000
320.000000 - 546.000000
また、上から 480 ピクセルより下のすべての行は、「ビュー」がまだ範囲外であると考えているため、選択できません。
私の解決策
メイン ウィンドウの xib ファイルを含め、すべての画面のサイズを Retina 4 に設定します。これでiPhone 4でも問題なく動作するようです。また、iOS 6 シミュレーターで 480px 未満のすべての行をクリックできるようになりました