2015-12-02 9 views
6

मैं आपसे पूछना चाहता हूं कि वर्टिकल स्टैक व्यू में रखे प्रत्येक कंटेनर के प्रतिशत में ऊंचाई निर्धारित करना संभव है या नहीं? मैं स्टैक व्यू में 3 कंटेनर रखना चाहता हूं। सबसे पहले स्क्रीन आकार का 40%, दूसरा 20% और तीसरा 40% लेना चाहिए। धन्यवादस्टैक व्यू में कंटेनर की ऊंचाई कैसे सेट करें?

enter image description here

उत्तर

7

'आनुपातिक भरें' वितरण प्रकार आंतरिक सामग्री आकार के साथ काम करता है।

तो यदि हमारे लंबवत ढेर (ऊंचाई 600 कहते हैं) दृश्य में 2 विचार हैं, व्यूए (आंतरिक सामग्री ऊंचाई 200) और व्यूबी (आंतरिक सामग्री ऊंचाई 100), स्टैक व्यू उन्हें व्यूए (ऊंचाई 400) और व्यूबी (ऊंचाई 200)।

इसके अलावा,

  1. सभी दृश्यों आंतरिक सामग्री ऊंचाई, ऊर्ध्वाधर स्टेक दृश्य नहीं है, तो हमेशा दिखाई देगा एक आईबी त्रुटि "की जरूरत के लिए बाधा: वाई स्थिति या ऊंचाई"।
  2. कोई आंतरिक ऊंचाई वाले दृश्य शून्य ऊंचाई तक गिर जाएंगे।
  3. अंतर्निहित ऊंचाई वाले दृश्य स्वयं को आनुपातिक रूप से वितरित करेंगे।

क्या आप वास्तव में चाहते हैं

दो बाधाओं के साथ 'भरने' प्रकार वितरण है।

  1. ViewA.height = 2 * ViewB.height
  2. ViewB.height = 0.5 * ViewC.height

यही सब। आशा करता हूँ की ये काम करेगा।

enter image description here

+0

आपको बहुत बहुत धन्यवाद। मुझे स्टैक दृश्यों को और समझने में मदद मिली – Lachtan

0

तुम भी है जहाँ आप एक पाठ क्षेत्र को खत्म करने और फिर इसे वापस लौट भरने समान रूप से स्टैक दृश्य को वितरण के साथ, निम्नलिखित की तरह हो सकता है यह प्रोग्राम के रूप में लागू कर सकते हैं:

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 

    } 

} 
संबंधित मुद्दे