2015-12-02 12 views

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

  1. 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“.
  2. Ansichten ohne Eigenhöhe werden auf Null zusammenfallen.
  3. Ansichten mit intrinsischer Höhe werden sich proportional verteilen.

Was Sie wirklich wollen

ist die 'füllen' Typ Verteilung mit zwei Einschränkungen.

  1. ViewA.height = 2 * ViewB.height
  2. ViewB.height = 0,5 * ViewC.height

Das ist alles. Ich hoffe es hilft.

enter image description here

+0

Vielen Dank. Hat mir geholfen, Stapelansichten besser zu verstehen – Lachtan

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 

    } 

} 
Verwandte Themen