XCodeのsizeclass(Vary for Traits)は、電話の水平画面と垂直画面に一致します。
Sizeclass Vary
ほとんどすべてのiOS開発者は画面適応の問題に遭遇し、Appleはこれを行うためのいくつかの方法を提供しています。同時に、適応を容易にするために、OCのMasonry(Swiftの対応するSnapKit)などのサードパーティのフレームワークを使用することもできます。
ここでは、特別なケースを紹介します-対処方法Xib
。
ディファレンシャルレイアウト
私たちの日常の開発では、次のレイアウトに遭遇することがよくあります。
垂直screen.png
水平screen.png
水平画面と垂直画面のレイアウトは同じではありませんが、2つの全体的なレイアウトから、2つのレイアウトは似ています。唯一の違いは、子コントロールが親ビューのサイズを受け取り、対応する変更を行うことです。
そして、ここで言われていること
NSLayoutConstraint
これは、水平画面と垂直画面の場合、異なるレイアウトが表示されることを意味します。
次の2つの写真で説明できます。
縦型スクリーン
水平スクリーン
コントロールは同じですが、配置は完全に異なります。画面の高さが十分でないため、垂直画面では、ラベルは星の下にありますが、水平画面ではラベルが表示されます。同じレイアウトを実現したいのは実現できません。星の右側にラベルを貼ってください。これはDifferential layout
です。
別のレイアウトを実現する方法
差分レイアウトを作成するには2つの方法があります。
最初のタイプは非常に根拠があります。画面の方向にオブザーバーを追加し、画面が回転したときにレイアウトを変更します。
2番目はXibのsizeClassを使用し、Xcode8はVary forTraitsに名前が変更されています。これは、この記事の主な紹介でもあります。
最初のものについて話させてください:オブザーバーモードを追加します
次のように、変更が必要なインターフェイスにオブザーバーを追加できます。
Differential layout
次に、コールバック関数を調整しますDifferential layout
実装では、目標を達成するためにここでレイアウトを変更します。
この方法の欠点は、コードの量が多すぎることです。複雑なインターフェースレイアウトに直面すると、それを行うのは非常に苦痛になります(もちろん、この場合に必要なインターフェースは一般的にそれほど複雑ではありません)。利点は、IPad / iPhoneを含むすべてのデバイスに使用できることです。設定は、さまざまなモデルに合わせて調整できます。たとえば、4Sの画面は他の画面とは異なります。インターフェイスを単にズームインおよびズームアウトするだけでは効果がありません。この方法を使用することをお勧めします。
次に、Vary forTraitsの操作がSBに実装されています。実際、それを聞く方法を考えるのは簡単です。具体的な操作は次のとおりです。
1はじめに
作業したいインターフェースのXibに移動し、下部にあるVary forTraitsを見つけます。
特性によって異なります
-
左側にあるさまざまなモデルは次のとおりです。
モデル携帯電話があり、パッドもあります。マウスを左クリックすると、上記が表示されます。表示:XXXXX、図に示すiPhoneSE。この領域を以下のモデル領域と呼びます。
-
真ん中:
水平および垂直画面言うまでもなく。以下、この領域を画面方向領域と呼ぶ。
-
パラメータの設定:
パラメータクリックすると、幅と高さの2つのオプション値を含むダイアログが表示されます。
パラメータ値オプション
この領域は、以下ではパラメータ領域と呼ばれます。
上記の3つの部分を組み合わせて、必要な画面スタイルを選別します。実際、sizeClassと同じですが、現在は視覚化されています。
2.操作
最初に携帯電話を垂直画面にレイアウトし、iPhone SEなどの携帯電話を選択してから、画面の向きの領域で垂直画面を選択し、最後に[特性の変更]ボタン(設定領域)をクリックします。次の図:
次に、2つのパラメーターを選択して、必要な画面をフィルター処理します。組み合わせがたくさんあるので、一つずつ試してみましょう。
最初に選択[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]
、次の図:
領域全体が青色に変わったことがわかりました。これは、多くのデバイスが選択されており、どのデバイスが使用可能であるかを示しています。図の青い丸い矢印をクリックすると、現在サポートされているデバイスを確認できます。
モデル
電話の電話部分を見るだけで、水平でも垂直でもサポートされていることがわかります。
put
statusBarOrientationChange
キャンセル、選択Width
その後、同じ手順でサポートされているデバイスを確認します。 モデル これが必要な垂直画面です。
選択後、元のVary forTraitsボタンがDoneVaryingになっていることがわかります。これは、現在編集中であることを意味します。 Done Varyingは、クリックした後、保存された効果と同等であることを意味します。次のステップは、画面を調整することです。その後、選択したモデルを適応させます。たとえば、垂直画面は次のように調整されます。
適応1
次に、[DoneVarying]をクリックします。垂直スクリーンのこの適応が行われます。
次に、水平スクリーンも同じように調整されます。
設定 水平方向の画面の適応
完了後、それを実行し、水平および垂直画面の適応が行われていることを確認しました。