60

Interface Builder でいくつかのサブビューをレイアウトしましたが、代わりにコードで行いたいと思います。

プロパティの設定に関するUIView ドキ​​ュメントを読みました 。提供されているさまざまなマスク (など)を使用してストラットスプリングview.autoresizingMaskを変換する方法の論理的な説明を探しています。UIViewAutoresizingFlexibleLeftMargin

4

2 に答える 2

132

ビューの自動サイズ変更マスクを設定するときは、ビット単位の包括的 OR ( |) (Objective-C) または配列 (Swift 2、3、4) を使用して、 springsstrutsを指定します。

  • スプリングは、マスク (それぞれ、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);

ここに画像の説明を入力

于 2012-05-06T12:26:47.930 に答える
9

UIViewAutoResizingMasks は、「ストラット」および「スプリング」と呼ばれるものです。これを考えてみてください: 中に小さな正方形がある大きな正方形があります。その正方形が完全に中央に配置されるようにするには、大きな正方形の内側の各エッジから一定の幅を設定して、それを制約する必要があります。これらはストラットです。

一方、スプリングは、UIView回転中の のように機能します。ビューが画面の下部にとどまり、中央に配置されている必要があるとしましょう ( のようにUIToolbar)。ビューが 460 ピクセルから 320 ピクセルに回転したときに、画面の現在変更された寸法に対して同じ位置を維持するように、トップ スプリングを柔軟に保ちたいと考えています。IB でこれらのスプリングの 1 つを強調表示することは、適切な を設定することと同じでUIViewAutoResizingMaskあり、特に上部のスプリングを強調表示することは、 を呼び出すことに似ていmyView.autoResizingMask = UIViewAutoresizingFlexibleTopMarginます。

値を一対の括弧で囲み、次のような or 演算子を使用することで、値をタンデムに使用できます。myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)

マスクは an の typdef でありNSUInteger、それらは Apple が割り当てたフラグであるため、数値を報告しています。いずれかを Cmd + クリックすると、そのメソッド定義が表示されます。

于 2012-05-06T05:54:09.267 に答える