web-dev-qa-db-ja.com

4インチiPhoneと互換性のあるインターフェイスビルダーでuitableviewを作成する方法

4インチiphone5および古いiPhone4/4sと互換性のあるインターフェイスビルダーでuitableviewを作成するにはどうすればよいですか?

Xcode4.5には3つのオプションがあります。

  • フリーフォーム
  • Retina3.5フルスクリーン
  • Retina4フルスクリーン

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未満のすべての行をクリックできるようになりました

11
Anand

[〜#〜]注意[〜#〜]アプリケーションでアクションシートを表示する場合は、サイズ属性を「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);

}
18
M. Alvanez

Xibファイルを選択し、Size属性を変更します。

enter image description here

11
fannheyward

Interface Builderの「freeform」、「Retina 3.5」、「Retina 4」から選択するなどの設定は、右側のパネルの「シミュレーションメトリック」セクションにあります(注追加された強調)

つまり、これらの寸法で表示されたときにビューがどのように表示されるかを示すためにのみ使用されます。通常、これを使用して、設計時にビューをレイアウトするために必要なスペースを把握します。ただし、UIViewControllerのUIViewは、最後に画面に表示されるときに常にサイズ変更されます。

たとえば、上部にステータスバーとナビゲーションバーがあり、下部にタブバーがあることがわかっている場合、画面上の残りのビューを整理するスペースが少なくなるため、[シミュレートされたメトリック]セクションでこれらを選択します。パネルのは、ビュー内のスペースを確認し、これらのNavBarとTabBarが原因で実行時に画面外に表示される要素をy = 460などに配置しないようにするのに役立ちます。

ただし、最後に、UIViewControllerは、使用可能な最大スペースを占めるようにビューのサイズを変更し、AutoresizingMaskプロパティ(IBの[サイズインスペクター]ペインで構成できる支柱とばね)に従ってサブビューを移動します。

結論として、あなたがしなければならない唯一のことは:

  • ビューの「Retina3.5」シミュレーションメトリックを選択して、このビューが表示されたときに表示される可能性のある最小サイズをInterface Builderに表示することをお勧めします(4でのみ表示される画面の一部にビューとコントロールを配置することを回避できます) 「画面は3.5」画面ではなく、最小の共通ゾーンを念頭に置いてビューを設計します)
  • AutoResizing Masksを正しく構成して(または、iOS4やiOS5ではなくiOS6のみのアプリをリリースする場合は、AutoLayoutと制約を使用して)、画面が高いときにビューが正しく再配置されるようにします(Retina4 ")。
3
AliSoftware

私が理解していることから、iPhone4と5の両方に適用できるテーブルビューを作成したいと思います。最初にXcode4.5を試しましたが、コードは

 CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
 theTableView.frame = CGRectmake = (0,0,fullScreenRect.width,fullScreenRect.height);

fullScreenRectは、3.5インチか5インチかに関係なく、現在のデバイスの境界を返します。 uは高さと幅を動的に設定できます。

それがうまくいったかどうか私に知らせてください。

乾杯

W

3
WaaleedKhan

インターフェイスがストーリーボードを使用している場合:

「テキストエディタ」で* .Storyboardを開きます

そして最後の一番下に行きます<simulatedScreenMetrics key="destination" type="retina4"/>

削除type="retina4"

その後、3.5インチのデフォルトサイズになります

0
Frank Wu