11

インターフェイス ビルダーで 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 未満のすべての行をクリックできるようになりました

4

5 に答える 5

18

アプリケーションでアクションシートを表示する場合は、サイズ属性を「Retina 4 フルスクリーン」に設定することに注意してくださいこのソリューションは、実際にはメイン ウィンドウの寸法を iPhone 5 の寸法に設定します。私の場合、アクション シートを表示しようとすると、この影響を受けるディスプレイを iPhone 4 に設定します。これは、表示可能な画面の下から表示しようとするためです。 .

すべてのケースで機能する適切な解決策は、サイズを 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);

}
于 2012-09-25T19:22:27.850 に答える
11

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

ここに画像の説明を入力

于 2012-09-14T08:06:07.447 に答える
3

Interface Builder で「フリーフォーム」、「Retina 3.5」、または「Retina 4」から選択するなどの設定は、右側のパネルの「シミュレートされたメトリック」セクションにあります(強調が追加されていることに注意してください)

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

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

しかし最後に、UIViewController は、AutoresizingMask プロパティ (IB の [Size Inspector] ペインで構成できるストラットとスプリング) に従ってサブビューを移動し、使用可能な最大スペースを使用するようにビューのサイズを変更します。

結論として、あなたがしなければならない唯一のことは次のとおりです。

  • このビューが表示されたときの最小サイズをInterface Builderで表示するには、ビューに「Retina 3.5」シミュレートされたメトリックを選択することをお勧めします(4でのみ表示される画面の一部にビューとコントロールを配置するのを避けるのに役立ちます) 3.5 インチの画面ではなく、最小の共通ゾーンを念頭に置いてビューを設計します)
  • AutoResizing Masks を正しく構成します (または、アプリを iOS4 または iOS5 ではなく iOS6 のみにリリースする予定の場合は、AutoLayout と制約を使用します)。これにより、画面が高くなった場合 (Retina 4") にビューが正しく再配置されます。
于 2012-09-13T12:58:36.523 に答える
3

私が理解していることから、iPhone 4と5の両方に適用できるテーブルビューを作成したいと考えています。まず、Xcode 4.5を試したことはありませんが、コード

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

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

それがうまくいったかどうか教えてください..

乾杯

W

于 2012-09-13T12:47:09.760 に答える
0

インターフェイスが Storyboard を使用している場合:

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

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

消去 type="retina4"

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

于 2012-10-17T03:52:19.037 に答える