NSDirectionalEdgeInsets
と を使用したいと思いUIButton
ます。それは可能ですか?contentEdgeInsets
titleEdgeInsets
バックグラウンド
ローカリゼーションの目的で、iOS アプリケーションは、コンポーネントのインセットを設定するときに、左から右への言語と右から左への言語の両方に適応する必要がある場合があります。
AppleNSDirectionalEdgeInsets
は iOS11 で導入されましたが、残念ながら、これは のようないくつかのプロパティにのみ適用さdirectionalLayoutMargins
れUIEdgeInsets
ましたlayoutMargins
。
NSDirectionalEdgeInsets
対応する で使用されるleftとrightの代わりに、先頭と末尾の修飾子を使用してインターフェイス レイアウトの方向を尊重します。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)
}