5

プログラムで使用する方法を理解しようとしてUITraitCollectionいますが、それを理解するのは難しいと思います。私はiOS 8でiPad網膜用に開発しています。

println(self.traitCollection)次の出力を返します。

 <UITraitCollection: 0x10df4c7f0; _UITraitNameUserInterfaceIdiom = Pad,
 _UITraitNameDisplayScale = 2.000000, _UITraitNameHorizontalSizeClass = Regular, 
 _UITraitNameVerticalSizeClass = Regular, _UITraitNameTouchLevel = 0, 
 _UITraitNameInteractionModel = 1>

これはかなり簡単です。しかし、画面を回転させると、まったく同じ出力が得られます。つまり、同じ縦サイズ クラスと同じ横サイズ クラスです。

だから私の質問は、デバイスの向きごとに必要なサイズ クラスを指定する必要がありますか (私が見る限り、サイズ クラスは読み取り専用のプロパティです!)、それとも明らかな何かが欠けていますか? WWDC 2014 ビデオ サイトの「What's new in Cocoa-Touch」トークでの例では、デバイスの向きごとに異なる垂直/水平サイズ クラスを持つ iPhone を例として使用しています。

これについてどう思いますか?

4

1 に答える 1

7

このドキュメント(ユニバーサル アプリ用の統合されたストーリーボードにスクロール) は、iPad と iPhone の両方のサイズ クラスについて説明しています。

iPhoneは少し扱いに​​くいことに注意してください。すべての iPad はどの向きでも Regular-x-Regular ですが、iPhone のサイズ クラスは向きによって、縦向きの Regular(h)-x-Compact(w) から横向きの Compact-x-Compact に変わります。

これらすべての変更について噂されている説明は、Apple が間もなくより多くの画面解像度を導入する可能性があり、現在の数値では、これらのサイズ クラスを使用せずに多数の if-then が必要になるというものです。この移行を容易にするために、レスポンシブ Web デザインのようなものを検討することをお勧めします。この場合、いくつかの一般的なレイアウトを定義し、それらのレイアウトの 1 つに正確なサイズでうまく収まるように拡張します。

編集:

1) リンクが壊れている場合は、"Whats New in iOS" Apple Doc を見つけて、iOS8 セクションに移動し、"Supporting New Screen Sizes and Scales" を探してください。

2) iPhone 6+ は、ランドスケープ モードで通常の幅です。

于 2014-06-20T17:14:27.623 に答える