[解決済み] leftAnchorとleadingAnchorの違い?
質問
私はiOS用のSwiftで制約を扱っており、命名規則/ドキュメントのほとんどは、物事を非常に自己説明していますが、最近私を混乱させた1つのことは、NSLayoutXAxisAnchorクラスの2組です。
leadingAnchor, leftAnchor
とともに
trailingAnchor, rightAnchor
iOSアプリでプログラム的に制約を設定したとき、私はこれらを全く互換的に使用できることを発見しました。leadingAnchor を使用してアプリを実行し、動作を観察し、次に leftAnchor を使用してアプリを実行し、動作を観察すると、まったく同じように機能します。
developer.apple.com のドキュメントをチェックしてみましたが、結果は (名前の違いは無視して) まったく同じでさえあります。たとえば、leadingAnchor と leftAnchor を比較しています。
"このアンカーは、ビューのリーディング エッジで制約を作成するために使用します。 このアンカーは、以下のサブセットと組み合わせることができます。 NSLayoutXAxisAnchor アンカーのサブセットとのみ組み合わせることができます。leadingAnchorは、以下のアンカーと組み合わせることができます。 他の leadingAnchor、trailingAnchor、または centerXAnchor と組み合わせることができます。詳細については NSLayoutAnchor Class Reference.を参照してください。
と比較します。
<ブロッククオート"このアンカーは、ビューの左端との制約を作成するために使用します。このアンカーは このアンカーは、NSLayoutXAxisAnchorのサブセットと組み合わせることだけが可能です。 アンカーのサブセットとのみ組み合わせることができます。leftAnchorは、別のleftAnchor、rightAnchor、またはleftAnchorと結合することができます。 rightAnchor、または centerXAnchor と組み合わせることができます。詳細については NSLayoutAnchor クラスリファレンス.を参照してください。
これらのプロパティの間に意図した違いがあるかどうか、どなたかご存知でしょうか?
どのように解決するのですか?
このことは、WWDC 2015 のビデオの 1 つで (簡単に) 取り上げられました。 Autolayout の謎 (パート 1 だったと思いますが、どちらも見る価値があります)。
左と右の制約は絶対的なもので、常に画面またはコントロールの左と右を参照します。 リーディングおよびトレーリング制約は、デバイスのロケールの影響を受けます。読む方向が左から右であるロケール (英語、フランス語、スペイン語など) では、リーディング & left (およびトレーリング & right) は交換可能に使用されます。 読む方向が右から左になるロケール(ヘブライ語やアラビア語など)では、「leading」は右側になり、「trailing」は左側になります。
ビデオでのアドバイスは、絶対的な左/右という特別な要件がない限り、ほとんどの場合、左/右ではなく、leading/trailing を使用すべきであるというものでした。
ラベルとテキスト フィールドの典型的な「フォーム」を考えてみましょう。 リーディング/トレーリング制約を使用すると、英語ロケールではラベルが左、テキスト フィールドが右になり、ヘブライ語ロケールではラベルが右、テキスト フィールドが左になります。
右から左へ教える子供向けアプリを作成した場合、次のようになります。 常に を画面の左側に表示させたい場合、left/right 制約が適切でしょう。
関連
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] iOS 7のUINavigationControllerで背面スワイプジェスチャーを無効にする方法
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
dyld: ライブラリがロードされていません。エラーの解決
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] iOS 13でダークモードをオプトアウトすることは可能ですか?
-
[解決済み] Swift 3でディスパッチキューを作成する方法
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み] Swiftで配列に要素を追加する
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。