垂直スタックビューに配置された各コンテナーの高さをパーセンテージで設定できるかどうかを確認したいのですが。スタックビューに3つのコンテナーが必要です。 1つ目は画面サイズの40%、2つ目は20%、3つ目は40%です。ありがとうございました
「比例配分」分布タイプは、固有のコンテンツサイズで機能します。
したがって、垂直スタック(高さは600)ビューに2つのビュー、ViewA(組み込みコンテンツの高さ200)とViewB(組み込みコンテンツの高さ100)がある場合、スタックビューはそれらをViewA(高さ400)とViewB(高さ200)にサイズ変更します。
また、
本当に欲しいもの
'fill'タイプの分布で、2つの制約があります。
それで全部です。それが役に立てば幸い。
次のように、プログラムで実装して、1つのテキストフィールドを削除し、スタックビューの均等配分の塗りつぶしで返すこともできます。
class LoginViewController: UIViewController{
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameTextField.translatesAutoresizingMaskIntoConstraints = false
emailTextField.translatesAutoresizingMaskIntoConstraints = false
passwordTextField.translatesAutoresizingMaskIntoConstraints = false
}
// IBAction
@IBAction func registerLoginSegmented(_ sender: Any) {
if (sender as AnyObject).selectedSegmentIndex == 0{
// Before we resize (shrink) the nameTextField, change the stackview' distribution from "fill equally" to just "fill"
stackView.distribution = .fill
// Change the nameTextField's text
heightConstraintNameTextField = nameTextField.heightAnchor.constraint(equalToConstant: 0)
heightConstraintNameTextField?.isActive = true
// Rearrange the height of the emailTextField
heightConstraintEmailTextField = emailTextField.heightAnchor.constraint(equalToConstant: 50)
heightConstraintEmailTextField?.isActive = true
// Rearrange the height of the passwordTextField
heightConstraintPasswordTextField = passwordTextField.heightAnchor.constraint(equalToConstant: 50)
heightConstraintPasswordTextField?.isActive = true
}
else {
// Return the nameTextField by simply trun off the constrants and assign "fillEqually" instead of "fill"
heightConstraintNameTextField?.isActive = false
heightConstraintEmailTextField?.isActive = false
heightConstraintPasswordTextField?.isActive = false
stackView.distribution = .fillEqually
}
}