4インチiphone5および古いiPhone4/4sと互換性のあるインターフェイスビルダーでuitableviewを作成するにはどうすればよいですか?
Xcode4.5には3つのオプションがあります。
Retina 4を選択した場合、3.5インチの電話では、画面の境界を越える/オーバーフローします
コードを使用して、それに応じてフレームを設定できますが、Interface Builderを使用するとどうなりますか?
Interface Builderを使用してどのように行う必要がありますか?
[〜#〜]編集[〜#〜]
私の質問は、iphone 5 retina4インチスクリーンです。ステータスバーとナビゲーションバーがあるビューのサイズを調べるとき、freeform/none /retina3.5を選択した場合のself.view.frame.size.height/width、frame 320.000000 x416.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ファイルも含め、すべての画面でサイズをRetina4に設定します。この後、iphone4でも問題なく動作するようです。また、iOS6シミュレーターで480px未満のすべての行をクリックできるようになりました
[〜#〜]注意[〜#〜]アプリケーションでアクションシートを表示する場合は、サイズ属性を「Retina4フルスクリーン」に設定してください。このソリューションは、実際にはメインウィンドウのサイズをiPhone 5のサイズに設定します。私の場合、アクションシートを表示しようとすると、表示可能な画面の下から表示しようとするため、iPhone4でこの影響を受けるディスプレイを設定します。 。
すべての場合に機能する適切な解決策は、サイズをnoneに設定し、アプリデリゲートのdidfinishloadingメソッドで画面サイズを検出し、メインウィンドウをそのサイズに設定するか、rootviewcontrollerのビューをそのサイズに設定することです。アクションシートは正しく機能します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.frame = CGRectMake(0, 0, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height);
}
Xibファイルを選択し、Size
属性を変更します。
Interface Builderの「freeform」、「Retina 3.5」、「Retina 4」から選択するなどの設定は、右側のパネルの「シミュレーションメトリック」セクションにあります(注追加された強調)。
つまり、これらの寸法で表示されたときにビューがどのように表示されるかを示すためにのみ使用されます。通常、これを使用して、設計時にビューをレイアウトするために必要なスペースを把握します。ただし、UIViewControllerのUIViewは、最後に画面に表示されるときに常にサイズ変更されます。
たとえば、上部にステータスバーとナビゲーションバーがあり、下部にタブバーがあることがわかっている場合、画面上の残りのビューを整理するスペースが少なくなるため、[シミュレートされたメトリック]セクションでこれらを選択します。パネルのは、ビュー内のスペースを確認し、これらのNavBarとTabBarが原因で実行時に画面外に表示される要素をy = 460などに配置しないようにするのに役立ちます。
ただし、最後に、UIViewControllerは、使用可能な最大スペースを占めるようにビューのサイズを変更し、AutoresizingMaskプロパティ(IBの[サイズインスペクター]ペインで構成できる支柱とばね)に従ってサブビューを移動します。
結論として、あなたがしなければならない唯一のことは:
私が理解していることから、iPhone4と5の両方に適用できるテーブルビューを作成したいと思います。最初にXcode4.5を試しましたが、コードは
CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
theTableView.frame = CGRectmake = (0,0,fullScreenRect.width,fullScreenRect.height);
fullScreenRect
は、3.5インチか5インチかに関係なく、現在のデバイスの境界を返します。 uは高さと幅を動的に設定できます。
それがうまくいったかどうか私に知らせてください。
乾杯
W
インターフェイスがストーリーボードを使用している場合:
「テキストエディタ」で* .Storyboardを開きます
そして最後の一番下に行きます<simulatedScreenMetrics key="destination" type="retina4"/>
削除type="retina4"
その後、3.5インチのデフォルトサイズになります