iPhone 6または5sで横向きの分割ビューをサポートするにはどうすればよいですか?

robotspacer

私のアプリでは、iPhone 6の横向きに多くの無駄なスペースがあり、4インチの画面でもそれほどではありません。iPhone6Plusの横向きの2ペインビューをサポートするために、iOS8のUISplitViewControllerの変更をすでに使用しています。 、ただし、一部の小さなデバイスでも両方のペインを表示すると便利です。

便利なことに、AppleはWWDC2014セッション「UIKitを使用したアダプティブアプリの構築」開催しました。このセッションには、これを行う方法の詳細が含まれていました。ここからサンプルコードダウンロードできますが、要するにUISplitViewControllerUIViewControllerサブクラスの内部に配置されます。サブクラスは、幅が十分に広いと見なすときに、分割ビューsetOverrideTraitCollection:forChildViewController:を強制[UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular]するために使用ます。当時、サンプルコードは正常に機能し、ほとんどのデバイスで引き続き機能します。

しかし、自分のアプリでこのコードを使おうとすると、iPhone 6Plusではひどく失敗することがわかりました。サンプルコードをダウンロードして2つの変更を加えると、これを自分で確認できます。

  • ストーリーボードを追加し、それに空のView Controllerを追加して、「LaunchScreenFile」として設定します。これは、6Plusでネイティブ解像度でアプリを実行するために必要です。
  • AAPLTraitOverrideViewController.m、21行目をsize.width > 500.0、または414より大きい値に変更します。これは、分割ビューに6Plusの縦向きのビューが1つだけ表示されるようにするために必要です。

これで、シミュレーターでアプリを実行できます。問題を確認するには、次のようにします。

  • デバイスを横向きに回転させます(コマンド-右矢印)
  • すぐに回転して縦向きに戻します(コマンド-左矢印)

あなたはすでに何かが正しくないことを見ることができます。すべてのテーブルセルには、縦向きの右側に矢印が付いているはずですが、そうではありません。彼らはまだ分割されたビューにいるように振る舞っています。これらの行の1つをタップすると、さらに悪化します。詳細ビューが下から上にスライドし、ナビゲーションバーが消えます。

ここで問題を引き起こしているiOS8のバグがあるに違いないと思います。しかし、このコードはiPhone 6 Plusが発表される前に共有されていたため、そのデバイスと互換性を持たせるためにいくつかの調整が必要な可能性もあります。これまでのところ、私が見つけた唯一の解決策は21行目を次のようなものに変更することですif (size.width > 500.0 && size.width < 736.0)が、次にAppleが新しい画面サイズを導入したときに再び壊れることがあるコードは使用したくありません。これを処理するためのより良い方法はありますか?

マットザンチェリ

常に水平サイズのクラスを通常にしたいと思うようです(UIUserInterfaceSizeClassRegular)。これを行うには、をオーバーライドしますtraitCollectionDidChange:このメソッドでは、垂直サイズクラスがcompact(横向きである可能性が高いことを示唆している)の場合、水平サイズクラスが通常になるようにトレイトコレクションをオーバーライドします。

UITraitCollection *compactHeight = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassCompact];
if ([self.traitCollection containsTraitsInCollection:compactHeight]) {
    UITraitCollection *regularWidth = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
    self.forcedTraitCollection = [UITraitCollection traitCollectionWithTraitsFromCollections:@[self.traitCollection, regularWidth]];
    [self setOverrideTraitCollection:self.forcedTraitCollection forChildViewController:_viewController];
} else {
    [self setOverrideTraitCollection:nil forChildViewController:_viewController];
}

ただし、より具体的な動作が必要な場合は、アプリ固有の動作をキャンバスサイズに依存する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

iPhone / iPadシミュレータのサイズを変更するにはどうすればよいですか?

分類Dev

iPhoneでデフォルトでテンキーを表示するにはどうすればよいですか?

分類Dev

iPhone6およびiPhone6Plusのデバイス幅cssビューポートサイズはどれくらいですか

分類Dev

iPhoneでアラートボックスを作成するにはどうすればよいですか?

分類Dev

iPhone 5の画面サイズの画像に名前を付けるにはどうすればよいですか?

分類Dev

XcodeのiOSアプリにiPhone5の大画面サポートを追加するにはどうすればよいですか?

分類Dev

背の高いiPhone5の画面サイズをサポートするにはどうすればよいですか?

分類Dev

iPhone 6 PlusまでのすべてのiPhoneデバイスで1つのxibをサポートするにはどうすればよいですか?

分類Dev

iPhoneで横向きを無効にし、iPadで有効のままにするにはどうすればよいですか?

分類Dev

2014年の時点でさまざまなiPhoneの画面サイズをサポートするにはどうすればよいですか?

分類Dev

iPhone 6(750 x 1334)のアプリビデオプレビューの解像度を取得するにはどうすればよいですか?

分類Dev

iPhone 6S Plusのフォントサイズを処理するにはどうすればよいですか?

分類Dev

SwiftでiPhoneのステータスバーを透明にするにはどうすればよいですか?

分類Dev

iPhone6用のarmv7バージョンをxcodeビルドして実行するにはどうすればよいですか?

分類Dev

iPhone6用のarmv7バージョンをxcodeビルドして実行するにはどうすればよいですか?

分類Dev

特定のiPhoneまたはiPadモデルでフラッターアプリを実行するにはどうすればよいですか?

分類Dev

次のアイテムに移行するときに、iPhoneでブートストラップカルーセルのちらつき/フラッシュ/点滅を修正するにはどうすればよいですか?(ビデオ例が含まれています)

分類Dev

異なる幅のページ間でフォントサイズを同じにするにはどうすればよいですか(iPhoneの場合)?

分類Dev

iphone用のavconvでavi(MJPEGコーデック)を作成するにはどうすればよいですか?

分類Dev

デバイスがiphone4またはiphone5のどちらであるかをテストするにはどうすればよいですか

分類Dev

iPhone 6plusの設定メニューにApplePayを表示するにはどうすればよいですか?

分類Dev

デバイスの画面サイズを使用してプログラムで複数のiOSバージョンとデバイスをサポートするようにiPhoneアプリを作成するにはどうすればよいですか?

分類Dev

コード化されたアプリをiPhoneに直接インポートするにはどうすればよいですか?

分類Dev

XcodeのiPhone5SEシミュレーターはどこにありますか?または、5SEは5Sと同じですか?

分類Dev

IoS / Swift-iPhoneのアルバムの画像をuicollectionビューに表示するにはどうすればよいですか?

分類Dev

iPhoneからMacOSにSSHキーをインポートするにはどうすればよいですか?

分類Dev

iPhoneからサーバーに高速ビデオライブストリームを取得するにはどうすればよいですか?

分類Dev

Xamarin iOS(iPhone)でポップオーバーを作成するにはどうすればよいですか?

分類Dev

iPhone XsシミュレーターでSiriへのテキスト入力を有効にするにはどうすればよいですか?

Related 関連記事

  1. 1

    iPhone / iPadシミュレータのサイズを変更するにはどうすればよいですか?

  2. 2

    iPhoneでデフォルトでテンキーを表示するにはどうすればよいですか?

  3. 3

    iPhone6およびiPhone6Plusのデバイス幅cssビューポートサイズはどれくらいですか

  4. 4

    iPhoneでアラートボックスを作成するにはどうすればよいですか?

  5. 5

    iPhone 5の画面サイズの画像に名前を付けるにはどうすればよいですか?

  6. 6

    XcodeのiOSアプリにiPhone5の大画面サポートを追加するにはどうすればよいですか?

  7. 7

    背の高いiPhone5の画面サイズをサポートするにはどうすればよいですか?

  8. 8

    iPhone 6 PlusまでのすべてのiPhoneデバイスで1つのxibをサポートするにはどうすればよいですか?

  9. 9

    iPhoneで横向きを無効にし、iPadで有効のままにするにはどうすればよいですか?

  10. 10

    2014年の時点でさまざまなiPhoneの画面サイズをサポートするにはどうすればよいですか?

  11. 11

    iPhone 6(750 x 1334)のアプリビデオプレビューの解像度を取得するにはどうすればよいですか?

  12. 12

    iPhone 6S Plusのフォントサイズを処理するにはどうすればよいですか?

  13. 13

    SwiftでiPhoneのステータスバーを透明にするにはどうすればよいですか?

  14. 14

    iPhone6用のarmv7バージョンをxcodeビルドして実行するにはどうすればよいですか?

  15. 15

    iPhone6用のarmv7バージョンをxcodeビルドして実行するにはどうすればよいですか?

  16. 16

    特定のiPhoneまたはiPadモデルでフラッターアプリを実行するにはどうすればよいですか?

  17. 17

    次のアイテムに移行するときに、iPhoneでブートストラップカルーセルのちらつき/フラッシュ/点滅を修正するにはどうすればよいですか?(ビデオ例が含まれています)

  18. 18

    異なる幅のページ間でフォントサイズを同じにするにはどうすればよいですか(iPhoneの場合)?

  19. 19

    iphone用のavconvでavi(MJPEGコーデック)を作成するにはどうすればよいですか?

  20. 20

    デバイスがiphone4またはiphone5のどちらであるかをテストするにはどうすればよいですか

  21. 21

    iPhone 6plusの設定メニューにApplePayを表示するにはどうすればよいですか?

  22. 22

    デバイスの画面サイズを使用してプログラムで複数のiOSバージョンとデバイスをサポートするようにiPhoneアプリを作成するにはどうすればよいですか?

  23. 23

    コード化されたアプリをiPhoneに直接インポートするにはどうすればよいですか?

  24. 24

    XcodeのiPhone5SEシミュレーターはどこにありますか?または、5SEは5Sと同じですか?

  25. 25

    IoS / Swift-iPhoneのアルバムの画像をuicollectionビューに表示するにはどうすればよいですか?

  26. 26

    iPhoneからMacOSにSSHキーをインポートするにはどうすればよいですか?

  27. 27

    iPhoneからサーバーに高速ビデオライブストリームを取得するにはどうすればよいですか?

  28. 28

    Xamarin iOS(iPhone)でポップオーバーを作成するにはどうすればよいですか?

  29. 29

    iPhone XsシミュレーターでSiriへのテキスト入力を有効にするにはどうすればよいですか?

ホットタグ

アーカイブ