0

NSDirectionalEdgeInsetsと を使用したいと思いUIButtonます。それは可能ですか?contentEdgeInsetstitleEdgeInsets

バックグラウンド

ローカリゼーションの目的で、iOS アプリケーションは、コンポーネントのインセットを設定するときに、左から右への言語と右から左への言語の両方に適応する必要がある場合があります。

AppleNSDirectionalEdgeInsetsは iOS11 で導入されましたが、残念ながら、これは のようないくつかのプロパティにのみ適用さdirectionalLayoutMarginsUIEdgeInsetsましたlayoutMargins

NSDirectionalEdgeInsets対応する で使用されるleftrightの代わりに、先頭末尾の修飾子を使用してインターフェイス レイアウトの方向を尊重します。UIEdgeInsets

現在の不適切な解決策

すべての変更されたプロパティを持つすべてのボタン/ビューに対して次のコードを使用するのUIEdgeInsetsは非常に面倒で、変更を行うときにエラーが発生しやすくなります。

let isRTL: UIUserInterfaceLayoutDirection = // logic to determine language direction 

if isRTL == .leftToRight {
    nextButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)
} else {
    nextButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 10)
}
4

1 に答える 1