Js

XCodeのsizeclass(Vary for Traits)は、電話の水平画面と垂直画面に一致します。



Sizeclass Vary



ほとんどすべてのiOS開発者は画面適応の問題に遭遇し、Appleはこれを行うためのいくつかの方法を提供しています。同時に、適応を容易にするために、OCのMasonry(Swiftの対応するSnapKit)などのサードパーティのフレームワークを使用することもできます。

ここでは、特別なケースを紹介します-対処方法Xib



ディファレンシャルレイアウト

私たちの日常の開発では、次のレイアウトに遭遇することがよくあります。

8115459-3917b76df430f880.png垂直screen.png
8115459-ccc0db323de2cb08.png水平screen.png

水平画面と垂直画面のレイアウトは同じではありませんが、2つの全体的なレイアウトから、2つのレイアウトは似ています。唯一の違いは、子コントロールが親ビューのサイズを受け取り、対応する変更を行うことです。



そして、ここで言われていることNSLayoutConstraintこれは、水平画面と垂直画面の場合、異なるレイアウトが表示されることを意味します。

次の2つの写真で説明できます。

8115459-68f3b4dc4555b766.png縦型スクリーン
8115459-8262187c525ba38f.png水平スクリーン
コントロールは同じですが、配置は完全に異なります。画面の高さが十分でないため、垂直画面では、ラベルは星の下にありますが、水平画面ではラベルが表示されます。同じレイアウトを実現したいのは実現できません。星の右側にラベルを貼ってください。これはDifferential layoutです。

別のレイアウトを実現する方法

差分レイアウトを作成するには2つの方法があります。



最初のタイプは非常に根拠があります。画面の方向にオブザーバーを追加し、画面が回転したときにレイアウトを変更します。

2番目はXibのsizeClassを使用し、Xcode8はVary forTraitsに名前が変更されています。これは、この記事の主な紹介でもあります。

最初のものについて話させてください:オブザーバーモードを追加します

次のように、変更が必要なインターフェイスにオブザーバーを追加できます。

Differential layout

次に、コールバック関数を調整しますDifferential layout実装では、目標を達成するためにここでレイアウトを変更します。
この方法の欠点は、コードの量が多すぎることです。複雑なインターフェースレイアウトに直面すると、それを行うのは非常に苦痛になります(もちろん、この場合に必要なインターフェースは一般的にそれほど複雑ではありません)。利点は、IPad / iPhoneを含むすべてのデバイスに使用できることです。設定は、さまざまなモデルに合わせて調整できます。たとえば、4Sの画面は他の画面とは異なります。インターフェイスを単にズームインおよびズームアウトするだけでは効果がありません。この方法を使用することをお勧めします。

次に、Vary forTraitsの操作がSBに実装されています。実際、それを聞く方法を考えるのは簡単です。具体的な操作は次のとおりです。

1はじめに
作業したいインターフェースのXibに移動し、下部にあるVary forTraitsを見つけます。


8115459-43b712df6ad0f234.png特性によって異なります
  • 左側にあるさまざまなモデルは次のとおりです。


    8115459-931b41aecb4d3c58.pngモデル

    携帯電話があり、パッドもあります。マウスを左クリックすると、上記が表示されます。表示:XXXXX、図に示すiPhoneSE。この領域を以下のモデル領域と呼びます。

  • 真ん中:


    8115459-41e9c0b6636161b5.png水平および垂直画面

    言うまでもなく。以下、この領域を画面方向領域と呼ぶ。

  • パラメータの設定:


    8115459-d91e4a3436b170f8.pngパラメータ

    クリックすると、幅と高さの2つのオプション値を含むダイアログが表示されます。


    8115459-4f2374c947c30a5a.pngパラメータ値オプション
    この領域は、以下ではパラメータ領域と呼ばれます。

上記の3つの部分を組み合わせて、必要な画面スタイルを選別します。実際、sizeClassと同じですが、現在は視覚化されています。

2.操作
最初に携帯電話を垂直画面にレイアウトし、iPhone SEなどの携帯電話を選択してから、画面の向きの領域で垂直画面を選択し、最後に[特性の変更]ボタン(設定領域)をクリックします。次の図:

8115459-16a9310bf88dc1b2.png

次に、2つのパラメーターを選択して、必要な画面をフィルター処理します。組み合わせがたくさんあるので、一つずつ試してみましょう。
最初に選択[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil] 、次の図:

8115459-1fad56a697d87630.png幅を選択
領域全体が青色に変わったことがわかりました。これは、多くのデバイスが選択されており、どのデバイスが使用可能であるかを示しています。図の青い丸い矢印をクリックすると、現在サポートされているデバイスを確認できます。
8115459-a44e0e562e4b80df.pngモデル
電話の電話部分を見るだけで、水平でも垂直でもサポートされていることがわかります。
put statusBarOrientationChangeキャンセル、選択Widthその後、同じ手順でサポートされているデバイスを確認します。 8115459-4675589ab7e05f04.pngモデル

これが必要な垂直画面です。

選択後、元のVary forTraitsボタンがDoneVaryingになっていることがわかります。これは、現在編集中であることを意味します。 Done Varyingは、クリックした後、保存された効果と同等であることを意味します。次のステップは、画面を調整することです。その後、選択したモデルを適応させます。たとえば、垂直画面は次のように調整されます。


8115459-32d8ea5621c57124.png適応1

次に、[DoneVarying]をクリックします。垂直スクリーンのこの適応が行われます。

次に、水平スクリーンも同じように調整されます。


設定 水平方向の画面の適応

完了後、それを実行し、水平および垂直画面の適応が行われていることを確認しました。