とんたんの技術メモ

注)ただのメモです。

ストーリーボードを使わないIOS開発(AutoLayout)

例えば、ボタンにオートレイアウトを設定する場合。

var uiButton: UIButton()
uiButton.translatesAutoresizingMaskIntoConstraints = false

// ボタンの上端は、親ビュー上端から0ptの位置
uiButton.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 0).isActive = true

// ボタンの下端は、親ビュー下端から0ptの位置
uiButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true

// ボタンの左端は、親ビュー左端から0ptの位置
uiButton.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 0).isActive = true

// ボタンの右端は、親ビュー右端から0ptの位置
uiButton.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0).isActive = true

// ボタンの幅は、親ビュー幅の1/2
uiButton.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.5).isActive = true

// ボタンの高さは、親ビュー高さの1/4
uiButton.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.25).isActive = true

// ボタンの高さは、親ビュー高さの1/4 + 10pt
uiButton.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.25, constant: 10.0).isActive = true

// ボタンの高さは、親ビュー高さと同じ
uiButton.heightAnchor.constraint(equalTo: self.view.heightAnchor).isActive = true

// ボタンの高さを48ptにする
uiButton.heightAnchor.constraint(equalToConstant: 48).isActive = true

// ボタンの位置を、親ビューの横中央に合わせる
uiButton.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

// ボタンの位置を、親ビューの縦中央に合わせる
uiButton.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true

// priorityを設定する
let uiViewAnchor = uiView.heightAnchor.constraint(equalTo: self.view.heightAnchor)
uiViewAnchor.priority = UILayoutPriority(rawValue: 250)
uiViewAnchor.isActive = true

UIViewの高さを可変にする方法

UIViewの中に、可変のUILabelがある場合

// uiviewに最小高さを設定
uiView.heightAnchor.constraint(greaterThanOrEqualToConstant: 100).isActive = true

// uilabelにbottom成約を追加
uiLabel.bottomAnchor.constraint(equalTo: uiView.bottomAnchor, constant: -48).isActive = true