3

たとえば、3 つのサブビューを含む親ビューがあります。プログラムでレイアウトアンカーを使用しており、次のレイアウトを実現しようとしています

|--subview 1--|--subview 2--|--subview 3--|

3 つのサブビューの幅はそれぞれ同じです。言い換えると、

subView1.width = subView2.width = subView3.width subView1.width+subView2.width+subView3.width = parentView.width

サブビュー 1 とサブビュー 2 の幅を次のように設定するために乗数を使用できる可能性があることはわかっています。

subView1.widthAnchor.constraintEqualToAnchor(contentView.widthAnchor, multiplier: 1/3).active = true
subView2.widthAnchor.constraintEqualToAnchor(contentView.widthAnchor, multiplier: 1/3).active = true

また、subView3 は、先行アンカーを subView2 の後続アンカーに揃えることができます。

ただし、Interface Builder が実際にこれら 3 つの幅を直接 (定数や乗数を使用せずに) 等しくなるように割り当てることができることをどこかで見ました。プログラムでLayout Anchorと同じことを行うことは可能ですか? そしてどうやって?ありがとう。

4

1 に答える 1

9

これがアンカーの完全なセットです(私は自分で試してみましたが、うまくいきます):

// Create subView1
let subView1 = UIView()
subView1.backgroundColor = UIColor.redColor()
subView1.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView1)

// Create subView2
let subView2 = UIView()
subView2.backgroundColor = UIColor.blueColor()
subView2.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView2)

// Create subView3
let subView3 = UIView()
subView3.backgroundColor = UIColor.greenColor()
subView3.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(subView3)

subView1.leadingAnchor.constraintEqualToAnchor(contentView.leadingAnchor).active = true
subView1.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView1.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true

subView2.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView2.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true

subView3.topAnchor.constraintEqualToAnchor(contentView.topAnchor).active = true
subView3.trailingAnchor.constraintEqualToAnchor(contentView.trailingAnchor).active = true
subView3.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor).active = true

subView1.trailingAnchor.constraintEqualToAnchor(subView2.leadingAnchor).active = true
subView2.trailingAnchor.constraintEqualToAnchor(subView3.leadingAnchor).active = true

// Add equal width anchors
subView1.widthAnchor.constraintEqualToAnchor(subView2.widthAnchor).active = true
subView2.widthAnchor.constraintEqualToAnchor(subView3.widthAnchor).active = true

お役に立てれば。:)

于 2015-12-25T01:48:56.493 に答える