Ich möchte Sie fragen, ob es möglich ist, die Höhe prozentual für jeden in der vertikalen Stapelansicht platzierten Container festzulegen. Ich möchte 3 Container in der Stapelansicht haben. Erstens sollte 40% der Bildschirmgröße, zweitens 20% und drittens 40%. DankeWie wird die Höhe von Containern in der Stapelansicht festgelegt?
6
A
Antwort
7
'Füllen proportional' Verteilungstyp arbeitet mit intrinsischer Inhaltsgröße.
Wenn also unsere vertikale Stapelansicht (Höhe 600) 2 Ansichten hat, ViewA (Eigeninhaltshöhe 200) und ViewB (Eigeninhaltshöhe 100), wird die Stapelansicht auf ViewA (Höhe 400) und ViewB (Höhe 200).
Auch
- Wenn alle Ansichten haben keine intrinsische Inhalt Höhe, Ansicht vertikale Stapel zeigen immer ein IB Fehler „Needs Einschränkung für: Y-Position oder Höhe“.
- Ansichten ohne Eigenhöhe werden auf Null zusammenfallen.
- Ansichten mit intrinsischer Höhe werden sich proportional verteilen.
Was Sie wirklich wollen
ist die 'füllen' Typ Verteilung mit zwei Einschränkungen.
- ViewA.height = 2 * ViewB.height
- ViewB.height = 0,5 * ViewC.height
Das ist alles. Ich hoffe es hilft.
0
Man könnte es auch programmatisch implementieren, wo Sie ein Textfeld beseitigen könnten und es dann mit Füllung gleichmäßig Verteilung der Stapelansicht, wie die folgenden Rückkehr zurück:
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
}
}
Vielen Dank. Hat mir geholfen, Stapelansichten besser zu verstehen – Lachtan