web-dev-qa-db-ja.com

iOS 11より前の水平方向の先頭または末尾の位置合わせ

警告:leading or trailing horizontal alignment before iOS 11

ストーリーボードファイルのシーンの1つで、Xcode 9.1のコンパイル中に上記の警告が表示されます。他のストーリーボードがあります(with iOS iOS 10.0)まだ特定のストーリーボードファイルのこの特定のシーンに警告が表示されます。

警告が表示されるシーンで展開ターゲットをiOS 11.0に変更すると、警告は抑制されますが、それはしたくありません。

誰もこの事件に遭遇しましたか?

47
Prabhav

私にとって問題は、trailing自体にleadingUIButtonアライメントを使用することでした。

安全な領域は完全に使用できるように見えます-後方互換性があり、適切なスーパービューマージンに変換されます。

ただし、この機能はiOS 11のみであるため、iOSの下位バージョンをターゲットにしている場合は、代わりに標準の左/右揃えを使用してください。

問題の原因となっているビューを見つける最も簡単な方法は、contentHorizontalAlignment="leading" または contentHorizontalAlignment="trailing" .xibのソースコード内

enter image description here

109

ステップ1:

問題のあるストーリーボードをソースコードとして表示: enter image description here

ステップ2:

次のすべてのインスタンスを置き換えます。

contentHorizontalAlignment="leading"

で:

contentHorizontalAlignment="left"

ステップ3:

次のすべてのインスタンスを置き換えます。

contentHorizontalAlignment="trailing"

で:

contentHorizontalAlignment="right"

ステップ4:

コンパイルしてウォッチ警告が消えます。

修正が必要な要素が大量にある場合、このアプローチは簡単です。 「contentHorizo​​ntalAlignment」値タイプとしての「リーディング」および「トレーリング」がiOS 11で導入されました。iOS10は、警告の理由である「リーディング」および「トレーリング」を認識しません。

30
etayluz

ビルドログの「警告」という単語の直前に、「xxx-yy-zzz」という形式のInterface Builder識別子が表示されます。それをコピーしてXcode検索バーに貼り付けると、「問題のある」コントロールが見つかります。検索結果をクリックすると、対応するコントロールが選択されたストーリーボードが表示されます。問題の残りは、他の回答を使用して解決できます。

1
David Hoy

この問題は、少しずらして左揃えにする必要があるボタンがたくさんあることで発生しました。ストーリーボードの配置を削除し、viewDidLoadで必要なボタンの配列を使用してこのようにしました。

func indentButtons(buttons: [UIButton?]){
    for i in 0..<buttons.count{
        buttons[i]!.contentHorizontalAlignment = .left
        buttons[i]!.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0)
    }
}
0
user462990