2012-05-06 3 views
46

Interface Builderでいくつかのサブビューをレイアウトしましたが、代わりにコードで実行したいと思います。UIView autoresizingMask - インターフェイスビルダーからコードへ - プログラムでストラットとスプリングを作成する - SwiftまたはObjective-C

view.autoresizingMaskプロパティの設定については、UIView docsを読んでいます。さまざまなマスク(例:UIViewAutoresizingFlexibleLeftMarginなど)を使用してストラットとスプリングをどのように翻訳するかについての論理的な説明を探しています。

答えて

115

(対物-C)、またはアレイ(スイフト2、3)スプリングストラットを指定する包含ビット単位のOR(|)を使用し、ビューの自動サイズ変更マスクを設定します。

  • スプリングスが(それぞれのObjective-Cまたはスウィフト3)マスクを指定することによって表される垂直スプリング

    • UIViewAutoresizingFlexibleHeight又は.flexibleHeight

    • 水平スプリング:UIViewAutoresizingFlexibleWidth又は.flexibleWidth

  • ストラットは、4つの「フレキシブルマージン」マスクのうちの1つが欠けている(すなわち、ストラットが存在しない場合、そのマージンのためのマスクが指定されている):

    • UIViewAutoresizingFlexibleLeftMargin又は.flexibleLeftMargin

    • UIViewAutoresizingFlexibleRightMargin又は.flexibleRightMargin

    • UIViewAutoresizingFlexibleTopMargin又は.flexibleTopMargin

    • UIViewAutoresizingFlexibleBottomMargin又は.flexibleBottomMargin

    • 例えば

水平スプリング上部と下部支柱とビューは幅を有し、左右のマージンは、可撓性のように指定します:

スウィフト3

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); 

enter image description here

+3

@Flink - あなたの編集が間違っています。私は私の答えを元の状態に戻しました。注意してください。特に:Strutsは、4つの「柔軟なマージン」マスクのうちの1つが欠けている(つまりストラットが存在しない場合、そのマージンのマスクが指定されています): " – MattyG

+0

申し訳ありません。 .. – Shmidt

+0

とても助かりました、ありがとう – kukudas

8

UIViewAutoResizingMasksは、「ストラット」と「スプリング」と呼ばれています。これを考えてみましょう。小さな正方形の内側に大きな正方形があります。その正方形が完全に中央に収まるようにするには、大きな正方形の各内側の端から一定の幅を設定して、それを拘束する必要があります。これらはストラットです。

スプリングは、回転中にUIViewと同じように機能します。私たちのビューは、画面中央に一列に並んでいる必要があります(UIToolbarのように)。ビューが460 pxから320 pxに回転すると、画面の現在の寸法との相対的な位置が同じになります。 IBのこれらのスプリングの1つを強調表示することは、適切なUIViewAutoResizingMaskを設定することと同じで、上部のスプリングを特に強調表示することはmyView.autoResizingMask = UIViewAutoresizingFlexibleTopMarginに似ています。彼らはNSUIntegerのtypdefであり、それらはそのフラグですので

値は括弧のペアでそれらを囲み、マスクはあなたに番号を報告しているmyView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)

様または演算子を使用してタンデムで使用することができますリンゴはそれらを割り当てました。 Cmd +をクリックするとそのメソッドの定義が表示されます。

関連する問題