Interface Builder でいくつかのサブビューをレイアウトしましたが、代わりにコードで行いたいと思います。
プロパティの設定に関するUIView ドキュメントを読みました 。提供されているさまざまなマスク (など)を使用してストラットとスプリングview.autoresizingMask
を変換する方法の論理的な説明を探しています。UIViewAutoresizingFlexibleLeftMargin
Interface Builder でいくつかのサブビューをレイアウトしましたが、代わりにコードで行いたいと思います。
プロパティの設定に関するUIView ドキュメントを読みました 。提供されているさまざまなマスク (など)を使用してストラットとスプリングview.autoresizingMask
を変換する方法の論理的な説明を探しています。UIViewAutoresizingFlexibleLeftMargin
ビューの自動サイズ変更マスクを設定するときは、ビット単位の包括的 OR ( |
) (Objective-C) または配列 (Swift 2、3、4) を使用して、 springsとstrutsを指定します。
スプリングは、マスク (それぞれ、Objective-C または Swift) を指定することによって表されます。
垂直ばね: UIViewAutoresizingFlexibleHeight
または.flexibleHeight
水平ばね: UIViewAutoresizingFlexibleWidth
または.flexibleWidth
ストラットは、4 つの「柔軟なマージン」マスクのいずれかが欠けていることで表されます (つまり、ストラットが存在しない場合、そのマージンのマスクが指定されます)。
UIViewAutoresizingFlexibleLeftMargin
また.flexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin
また.flexibleRightMargin
UIViewAutoresizingFlexibleTopMargin
また.flexibleTopMargin
UIViewAutoresizingFlexibleBottomMargin
また.flexibleBottomMargin
たとえば、水平スプリングと上下のストラットを含むビューでは、幅と左右のマージンが柔軟に指定されます。
スイフト 3 および 4
mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin]
スイフト2
mySubview.autoresizingMask = [.FlexibleWidth, .FlexibleLeftMargin, .FlexibleRightMargin]
スイフト 1.2
mySubview.autoresizingMask = .FlexibleWidth | .FlexibleLeftMargin | .FlexibleRightMargin
Objective-C
mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin);
UIViewAutoResizingMask
s は、「ストラット」および「スプリング」と呼ばれるものです。これを考えてみてください: 中に小さな正方形がある大きな正方形があります。その正方形が完全に中央に配置されるようにするには、大きな正方形の内側の各エッジから一定の幅を設定して、それを制約する必要があります。これらはストラットです。
一方、スプリングは、UIView
回転中の のように機能します。ビューが画面の下部にとどまり、中央に配置されている必要があるとしましょう ( のようにUIToolbar
)。ビューが 460 ピクセルから 320 ピクセルに回転したときに、画面の現在変更された寸法に対して同じ位置を維持するように、トップ スプリングを柔軟に保ちたいと考えています。IB でこれらのスプリングの 1 つを強調表示することは、適切な を設定することと同じでUIViewAutoResizingMask
あり、特に上部のスプリングを強調表示することは、 を呼び出すことに似ていmyView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin
ます。
値を一対の括弧で囲み、次のような or 演算子を使用することで、値をタンデムに使用できます。myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)
マスクは an の typdef でありNSUInteger
、それらは Apple が割り当てたフラグであるため、数値を報告しています。いずれかを Cmd + クリックすると、そのメソッド定義が表示されます。