प्रोग्राम में UIStackView में दृश्य जोड़ें


158

मैं प्रोग्राम में UIStackView में विचारों को जोड़ने की कोशिश कर रहा हूं। अभी के लिए मेरा कोड है:

UIView *view1 = [[UIView alloc]init];
view1.backgroundColor = [UIColor blackColor];
[view1 setFrame:CGRectMake(0, 0, 100, 100)];

UIView *view2 =  [[UIView alloc]init];
view2.backgroundColor = [UIColor greenColor];
[view2 setFrame:CGRectMake(0, 100, 100, 100)];

[self.stack1 addArrangedSubview:view1];
[self.stack1 addArrangedSubview:view2];

जब मैं एप्लिकेशन को तैनात करता हूं, तो केवल 1 दृश्य होता है और यह काले रंग के साथ होता है। (देखें 1 को मापदंडों को व्यू 2 के लिए भी मिलता है)


आप विवेक ने अपना आउटलेट चेक किया? क्या आपने रनटाइम में साक्षात्कार लॉग किए थे?
वेन

10
उपयोग करें addArrangedSubview:, नहींaddSubview:
pkamb 21

जवाबों:


245

स्टैक दृश्य आंतरिक सामग्री आकार का उपयोग करते हैं, इसलिए विचारों के आयामों को परिभाषित करने के लिए लेआउट बाधाओं का उपयोग करें।

बाधाओं को जल्दी से जोड़ने का एक आसान तरीका है (उदाहरण):

[view1.heightAnchor constraintEqualToConstant:100].active = true;

पूरा कोड:

- (void) setup {

    //View 1
    UIView *view1 = [[UIView alloc] init];
    view1.backgroundColor = [UIColor blueColor];
    [view1.heightAnchor constraintEqualToConstant:100].active = true;
    [view1.widthAnchor constraintEqualToConstant:120].active = true;


    //View 2
    UIView *view2 = [[UIView alloc] init];
    view2.backgroundColor = [UIColor greenColor];
    [view2.heightAnchor constraintEqualToConstant:100].active = true;
    [view2.widthAnchor constraintEqualToConstant:70].active = true;

    //View 3
    UIView *view3 = [[UIView alloc] init];
    view3.backgroundColor = [UIColor magentaColor];
    [view3.heightAnchor constraintEqualToConstant:100].active = true;
    [view3.widthAnchor constraintEqualToConstant:180].active = true;

    //Stack View
    UIStackView *stackView = [[UIStackView alloc] init];

    stackView.axis = UILayoutConstraintAxisVertical;
    stackView.distribution = UIStackViewDistributionEqualSpacing;
    stackView.alignment = UIStackViewAlignmentCenter;
    stackView.spacing = 30;


    [stackView addArrangedSubview:view1];
    [stackView addArrangedSubview:view2];
    [stackView addArrangedSubview:view3];

    stackView.translatesAutoresizingMaskIntoConstraints = false;
    [self.view addSubview:stackView];


    //Layout for Stack View
    [stackView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = true;
    [stackView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor].active = true;
}

नोट: यह iOS 9 पर परीक्षण किया गया था

UIStackView समान स्पेसिंग (केंद्रित)


26
स्टैक विचारों का उपयोग करने की बात यह है कि वे डेवलपर से बाधा प्रबंधन का विवरण छिपाते हैं। जैसा कि आपने बताया, यह एक आंतरिक सामग्री के आकार वाले उप-साक्षात्कारों पर निर्भर करता है, जो डिफ़ॉल्ट रूप से UIViewsनहीं होता है। यदि मूल पोस्टर के UILabelबजाय उदाहरणों का उपयोग किया गया था UIView, तो उसके कोड ने उसी तरह काम किया होगा जैसी वह उम्मीद करता था। मैंने एक उदाहरण जोड़ा जो इसे नीचे प्रदर्शित करता है।
ग्रेग ब्राउन

जब मैं ऐसा करता हूं "[view1.heightAnchor constraintEqualToConstant: 100] .active = true;" im त्रुटि पर त्रुटि हो रही है। यह केवल ios 9 पर काम कर रहा है। मुझे पता है कि uistackview ios 9+ के लिए है, लेकिन मैं ios 8 के लिए कैसे ऊंचाई तय कर सकता हूँ
नर्सरी सेलिमको

स्टोरीबोर्ड का उपयोग करके मेरा StackView जोड़ा जाता है। क्रम में, मैं कई UIViews जोड़ रहा हूँ (अन्य साक्षात्कार होते हैं) stackView को। डेटा लोड करने के बाद स्टैक व्यू के अंदर सभी दृश्य समान ऊँचाई के होते हैं, उन्हें सामग्री के अनुसार आकार नहीं मिल रहा है। @ user1046037
मनसु ....

क्या आपके पास उन व्यक्तिगत विचारों के लिए बाधाएं हैं ताकि सामग्री के आधार पर उनका आकार अलग-अलग हो?
user1046037

यह बराबर चौड़ाई या ऊँचाई के साथ विचारों का प्रबंधन करने के लिए सबसे अच्छा और इष्टतम तरीका है
Kampai

156

स्विफ्ट 5.0

//Image View
let imageView = UIImageView()
imageView.backgroundColor = UIColor.blue
imageView.heightAnchor.constraint(equalToConstant: 120.0).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 120.0).isActive = true
imageView.image = UIImage(named: "buttonFollowCheckGreen")

//Text Label
let textLabel = UILabel()
textLabel.backgroundColor = UIColor.yellow
textLabel.widthAnchor.constraint(equalToConstant: self.view.frame.width).isActive = true
textLabel.heightAnchor.constraint(equalToConstant: 20.0).isActive = true
textLabel.text  = "Hi World"
textLabel.textAlignment = .center

//Stack View
let stackView   = UIStackView()
stackView.axis  = NSLayoutConstraint.Axis.vertical
stackView.distribution  = UIStackView.Distribution.equalSpacing
stackView.alignment = UIStackView.Alignment.center
stackView.spacing   = 16.0

stackView.addArrangedSubview(imageView)
stackView.addArrangedSubview(textLabel)
stackView.translatesAutoresizingMaskIntoConstraints = false

self.view.addSubview(stackView)

//Constraints
stackView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
stackView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true

@ User1046037 उत्तर के आधार पर।


2
शुरू iOS 8 , इसे का उपयोग बैच में बाधाओं को सक्रिय करने के संभव है activate(_:), और यह इस तरह से करने के लिए आम तौर पर और अधिक कुशल है developer.apple.com/documentation/uikit/nslayoutconstraint/...
जोनाथन काब्रेरा


17

UIStackViewआंतरिक रूप से अपने व्यवस्थित साक्षात्कारों की स्थिति के लिए बाधाओं का उपयोग करता है। वास्तव में क्या अड़चनें पैदा होती हैं, यह इस बात पर निर्भर करता है कि स्टैक दृश्य कैसे कॉन्फ़िगर किया गया है। डिफ़ॉल्ट रूप से, एक स्टैक दृश्य बाधाओं को बनाएगा जो क्षैतिज रेखा में अपने व्यवस्थित साक्षात्कारों को बाहर निकालते हैं, जिससे अग्रणी और अनुगामी दृश्य अपने स्वयं के अग्रणी और अनुगामी किनारों को पिन करते हैं। तो आपका कोड इस तरह दिखने वाला एक लेआउट तैयार करेगा:

|[view1][view2]|

प्रत्येक सबव्यू के लिए आवंटित किया गया स्थान सबव्यू के आंतरिक सामग्री आकार सहित कई कारकों द्वारा निर्धारित किया जाता है और यह संपीड़न प्रतिरोध और प्राथमिकताओं को गले लगाने वाली सामग्री है। डिफ़ॉल्ट रूप से, UIViewउदाहरण एक आंतरिक सामग्री आकार को परिभाषित नहीं करते हैं। यह एक ऐसी चीज है जो आम तौर पर एक उपवर्ग द्वारा प्रदान की जाती है, जैसे UILabelया UIButton

चूंकि दो नए UIViewउदाहरणों की सामग्री संपीड़न प्रतिरोध और सामग्री गले लगाने की प्राथमिकताएं समान होंगी, और न ही दृश्य एक आंतरिक सामग्री आकार प्रदान करता है, इसलिए लेआउट इंजन को अपना सर्वश्रेष्ठ अनुमान लगाना चाहिए कि प्रत्येक दृश्य को किस आकार को आवंटित किया जाना चाहिए। आपके मामले में, यह उपलब्ध स्थान का पहला दृश्य 100% और दूसरा दृश्य कुछ भी नहीं बता रहा है।

यदि आप UILabelइसके बजाय इंस्टेंस का उपयोग करने के लिए अपने कोड को संशोधित करते हैं , तो आपको बेहतर परिणाम मिलेंगे:

UILabel *label1 = [UILabel new];
label1.text = @"Label 1";
label1.backgroundColor = [UIColor blueColor];

UILabel *label2 = [UILabel new];
label2.text = @"Label 2";
label2.backgroundColor = [UIColor greenColor];

[self.stack1 addArrangedSubview:label1];
[self.stack1 addArrangedSubview:label2];

ध्यान दें कि किसी भी बाधा को स्वयं बनाने के लिए आवश्यक नहीं है। यह उपयोग करने का मुख्य लाभ है UIStackView- यह डेवलपर से बाधा प्रबंधन के (अक्सर बदसूरत) विवरण को छुपाता है।


मुझे एक ही समस्या है कि यह लेबल के लिए काम करता है, लेकिन TextFields (या उस मामले के लिए दृश्य) के लिए नहीं। इसके अलावा सभी ट्यूटोरियल मैं लेबल, चित्र या बटन का उपयोग करता हूं। इसका मतलब यह है कि इन UI तत्वों से भिन्न कुछ के लिए, हम इस पद्धति का उपयोग नहीं कर सकते हैं?
शारीरिक

@physicalattraction आपके द्वारा स्टैक दृश्य में जोड़े गए दृश्यों का आंतरिक सामग्री आकार होना चाहिए। जैसा कि मुझे याद है, एक टेक्स्ट फ़ील्ड का आंतरिक आकार फ़ील्ड की सामग्री (जो विषम है) पर आधारित है। UIViewस्वयं के उदाहरणों में आंतरिक आकार नहीं होता है। आपको इन दृश्यों पर अतिरिक्त अवरोध लगाने की आवश्यकता हो सकती है, इसलिए स्टैक दृश्य जानता है कि उन्हें कितना बड़ा बनाना है।
ग्रेग ब्राउन

समझ में आता है, इसलिए मैं कोशिश कर रहा हूं। अब मैंने एक टेक्स्टफील्ड के साथ एक एक्सब में एक व्यू बनाया है, जिसे मैं 30 पिक्सल्स की स्पष्ट ऊँचाई की कमी देता हूं। मैं इसके बाद निम्नलिखित दो अड़चनें बनाता हूं: MyTextField.top = top+20और bottom = MyTextField.bottom+20। मुझे उम्मीद है कि यह मेरे विचार को 70 की आंतरिक ऊंचाई देगा, लेकिन इसके बजाय यह परस्पर विरोधी बाधाओं के बारे में शिकायत करता है। क्या आप जानते हैं कि यहां क्या चल रहा है? यह वह दृश्य है जिसे मैं अपने UIStackView के अंदर रखना चाहता हूं।
physical

मुझे लगता है कि मुझे पता है कि समस्या क्या है। एक स्टैक दृश्य स्वचालित रूप से अपने अंतिम व्यवस्थित सबव्यू को इसके निचले किनारे पर पिन करता है। तो स्टैक दृश्य आपके कंटेनर दृश्य को उसी आकार का बनाने का प्रयास कर रहा है। हालाँकि, आपने इस दृश्य को बताया है कि यह 70 पिक्सेल लंबा होना चाहिए, जो एक विरोध पैदा करता है। अपने कंटेनर दृश्य के तुरंत बाद एक अतिरिक्त खाली दृश्य बनाने का प्रयास करें और इसे एक ऊर्ध्वाधर सामग्री को गले लगाकर 0. की प्राथमिकता दें। अपने कंटेनर को एक ऊर्ध्वाधर सामग्री को 1000 की प्राथमिकता देते हुए देखें। इससे रिक्त स्थान को ढेर में भरने के लिए खाली दृश्य खिंचाव होगा। राय।
ग्रेग ब्राउन

मैं मान रहा हूं कि आप एक ऊर्ध्वाधर स्टैक दृश्य का उपयोग कर रहे हैं। आप इस लेख को देख सकते हैं कि मैंने स्टैक के विचारों के बारे में लिखा था: dzone.com/articles/…
ग्रेग ब्राउन

13

स्विफ्ट में 4.2

let redView = UIView()
    redView.backgroundColor = .red

    let blueView = UIView()
    blueView.backgroundColor = .blue

    let stackView = UIStackView(arrangedSubviews: [redView, blueView])
    stackView.axis = .vertical
    stackView.distribution = .fillEqually

    view.addSubview(stackView)

    //        stackView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)

    // autolayout constraint
    stackView.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activate([stackView.topAnchor.constraint(equalTo: view.topAnchor), stackView.leftAnchor.constraint(equalTo: view.leftAnchor), stackView.rightAnchor.constraint(equalTo: view.rightAnchor), stackView.heightAnchor.constraint(equalToConstant: 200)])

8

आपको आपको वितरण प्रकार सेट करना होगा। अपने कोड में, जोड़ें:

self.stack1.distribution = UIStackViewDistributionFillEqually;

या आप वितरण को सीधे अपने इंटरफ़ेस बिल्डर में सेट कर सकते हैं। उदाहरण के लिए:

यहां छवि विवरण दर्ज करें

आशा है कि मदद करता है;) लापिनौ।


8

दो लाइनों के बाद मेरा मुद्दा तय हो गया

    view.heightAnchor.constraintEqualToConstant(50).active = true;
    view.widthAnchor.constraintEqualToConstant(350).active = true;

स्विफ्ट संस्करण -

    var DynamicView=UIView(frame: CGRectMake(100, 200, 100, 100))
    DynamicView.backgroundColor=UIColor.greenColor()
    DynamicView.layer.cornerRadius=25
    DynamicView.layer.borderWidth=2
    self.view.addSubview(DynamicView)
    DynamicView.heightAnchor.constraintEqualToConstant(50).active = true;
    DynamicView.widthAnchor.constraintEqualToConstant(350).active = true;

    var DynamicView2=UIView(frame: CGRectMake(100, 310, 100, 100))
    DynamicView2.backgroundColor=UIColor.greenColor()
    DynamicView2.layer.cornerRadius=25
    DynamicView2.layer.borderWidth=2
    self.view.addSubview(DynamicView2)
    DynamicView2.heightAnchor.constraintEqualToConstant(50).active = true;
    DynamicView2.widthAnchor.constraintEqualToConstant(350).active = true;

    var DynamicView3:UIView=UIView(frame: CGRectMake(10, 420, 355, 100))
    DynamicView3.backgroundColor=UIColor.greenColor()
    DynamicView3.layer.cornerRadius=25
    DynamicView3.layer.borderWidth=2
    self.view.addSubview(DynamicView3)

    let yourLabel:UILabel = UILabel(frame: CGRectMake(110, 10, 200, 20))
    yourLabel.textColor = UIColor.whiteColor()
    //yourLabel.backgroundColor = UIColor.blackColor()
    yourLabel.text = "mylabel text"
    DynamicView3.addSubview(yourLabel)
    DynamicView3.heightAnchor.constraintEqualToConstant(50).active = true;
    DynamicView3.widthAnchor.constraintEqualToConstant(350).active = true;

    let stackView   = UIStackView()
    stackView.axis  = UILayoutConstraintAxis.Vertical
    stackView.distribution  = UIStackViewDistribution.EqualSpacing
    stackView.alignment = UIStackViewAlignment.Center
    stackView.spacing   = 30

    stackView.addArrangedSubview(DynamicView)
    stackView.addArrangedSubview(DynamicView2)
    stackView.addArrangedSubview(DynamicView3)

    stackView.translatesAutoresizingMaskIntoConstraints = false;

    self.view.addSubview(stackView)

    //Constraints
    stackView.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor).active = true
    stackView.centerYAnchor.constraintEqualToAnchor(self.view.centerYAnchor).active = true

8

जब आप स्टैक दृश्य के अंदर किसी दृश्य को छिपाने का प्रयास करते हैं, तो स्वीकृत उत्तर के लिए, बाधा सही नहीं होती है।

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x618000086e50 UIView:0x7fc11c4051c0.height == 120   (active)>",
    "<NSLayoutConstraint:0x610000084fb0 'UISV-hiding' UIView:0x7fc11c4051c0.height == 0   (active)>"
)

कारण जब छिपाने है viewमें stackViewयह चेतन करने के लिए 0 करने के लिए ऊंचाई सेट हो जाएगा।

समाधानpriority नीचे के रूप में बाधा को बदलते हैं।

import UIKit

class ViewController: UIViewController {

    let stackView = UIStackView()
    let a = UIView()
    let b = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()

        a.backgroundColor = UIColor.red
        a.widthAnchor.constraint(equalToConstant: 200).isActive = true
        let aHeight = a.heightAnchor.constraint(equalToConstant: 120)
        aHeight.isActive = true
        aHeight.priority = 999

        let bHeight = b.heightAnchor.constraint(equalToConstant: 120)
        bHeight.isActive = true
        bHeight.priority = 999
        b.backgroundColor = UIColor.green
        b.widthAnchor.constraint(equalToConstant: 200).isActive = true

        view.addSubview(stackView)
        stackView.backgroundColor = UIColor.blue
        stackView.addArrangedSubview(a)
        stackView.addArrangedSubview(b)
        stackView.axis = .vertical
        stackView.distribution = .equalSpacing
        stackView.translatesAutoresizingMaskIntoConstraints = false
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // Just add a button in xib file or storyboard and add connect this action.
    @IBAction func test(_ sender: Any) {
        a.isHidden = !a.isHidden
    }

}

5
    //Image View
    let imageView               = UIImageView()
    imageView.backgroundColor   = UIColor.blueColor()
    imageView.heightAnchor.constraintEqualToConstant(120.0).active = true
    imageView.widthAnchor.constraintEqualToConstant(120.0).active = true
    imageView.image = UIImage(named: "buttonFollowCheckGreen")

    //Text Label
    let textLabel               = UILabel()
    textLabel.backgroundColor   = UIColor.greenColor()
    textLabel.widthAnchor.constraintEqualToConstant(self.view.frame.width).active = true
    textLabel.heightAnchor.constraintEqualToConstant(20.0).active = true
    textLabel.text  = "Hi World"
    textLabel.textAlignment = .Center


    //Third View
    let thirdView               = UIImageView()
    thirdView.backgroundColor   = UIColor.magentaColor()
    thirdView.heightAnchor.constraintEqualToConstant(120.0).active = true
    thirdView.widthAnchor.constraintEqualToConstant(120.0).active = true
    thirdView.image = UIImage(named: "buttonFollowMagenta")


    //Stack View
    let stackView   = UIStackView()
    stackView.axis  = UILayoutConstraintAxis.Vertical
    stackView.distribution  = UIStackViewDistribution.EqualSpacing
    stackView.alignment = UIStackViewAlignment.Center
    stackView.spacing   = 16.0

    stackView.addArrangedSubview(imageView)
    stackView.addArrangedSubview(textLabel)
    stackView.addArrangedSubview(thirdView)
    stackView.translatesAutoresizingMaskIntoConstraints = false;

    self.view.addSubview(stackView)

    //Constraints
    stackView.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor).active = true
    stackView.centerYAnchor.constraintEqualToAnchor(self.view.centerYAnchor).active = true

@Oleg Popov द्वारा उत्तर पर सुधार किया गया


4

मेरे मामले में जो चीज मुझे गड़बड़ कर रही थी, मैं उम्मीद करूंगा कि मैं इस लाइन को याद कर रहा था:

stackView.translatesAutoresizingMaskIntoConstraints = false;

उसके बाद मेरे व्यवस्थित उपबंधों में किसी भी तरह की बाधा डालने की आवश्यकता नहीं है, स्टैकव्यू का ध्यान रखा जा रहा है।


4

ओलेग पोपोव के उत्तर का 5 संस्करण स्विफ्ट , जो उपयोगकर्ता1046037 के उत्तर पर आधारित है

//Image View
let imageView = UIImageView()
imageView.backgroundColor = UIColor.blue
imageView.heightAnchor.constraint(equalToConstant: 120.0).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 120.0).isActive = true
imageView.image = UIImage(named: "buttonFollowCheckGreen")

//Text Label
let textLabel = UILabel()
textLabel.backgroundColor = UIColor.yellow
textLabel.widthAnchor.constraint(equalToConstant: self.view.frame.width).isActive = true
textLabel.heightAnchor.constraint(equalToConstant: 20.0).isActive = true
textLabel.text  = "Hi World"
textLabel.textAlignment = .center

//Stack View
let stackView   = UIStackView()
stackView.axis  = NSLayoutConstraint.Axis.vertical
stackView.distribution  = UIStackView.Distribution.equalSpacing
stackView.alignment = UIStackView.Alignment.center
stackView.spacing   = 16.0

stackView.addArrangedSubview(imageView)
stackView.addArrangedSubview(textLabel)
stackView.translatesAutoresizingMaskIntoConstraints = false

self.view.addSubview(stackView)

//Constraints
stackView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
stackView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true

1

मैं अभी बहुत ही इसी तरह की समस्या को लेकर आया हूं। जैसे स्टैक व्यू के आयामों के पहले उल्लेख किया गया है, व्यवस्थित उप-साक्षात्कार के एक आंतरिक सामग्री आकार पर निर्भर करता है। यहाँ स्विफ्ट 2.x और निम्नलिखित दृश्य संरचना में मेरा समाधान है:

दृश्य - उविवि

customView - कस्टम दृश्य: UIView

स्टैक व्यू - UISTackView

व्यवस्थित साक्षात्कार - कस्टम यूविवि उपवर्ग

    //: [Previous](@previous)

import Foundation
import UIKit
import XCPlayground

/**Container for stack view*/
class CustomView:UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }


    init(){
        super.init(frame: CGRectZero)

    }

}

/**Custom Subclass*/
class CustomDrawing:UIView{
    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()

    }

    func setup(){
       // self.backgroundColor = UIColor.clearColor()
        print("setup \(frame)")
    }

    override func drawRect(rect: CGRect) {
        let ctx = UIGraphicsGetCurrentContext()
        CGContextMoveToPoint(ctx, 0, 0)
        CGContextAddLineToPoint(ctx, CGRectGetWidth(bounds), CGRectGetHeight(bounds))
        CGContextStrokePath(ctx)

        print("DrawRect")

    }
}



//: [Next](@next)
let stackView = UIStackView()
stackView.distribution = .FillProportionally
stackView.alignment = .Center
stackView.axis = .Horizontal
stackView.spacing = 10


//container view
let view = UIView(frame: CGRectMake(0,0,320,640))
view.backgroundColor = UIColor.darkGrayColor()
//now custom view

let customView = CustomView()

view.addSubview(customView)

customView.translatesAutoresizingMaskIntoConstraints = false
customView.widthAnchor.constraintEqualToConstant(220).active = true
customView.heightAnchor.constraintEqualToConstant(60).active = true
customView.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor).active = true
customView.centerYAnchor.constraintEqualToAnchor(view.centerYAnchor).active = true
customView.backgroundColor = UIColor.lightGrayColor()

//add a stack view
customView.addSubview(stackView)
stackView.centerXAnchor.constraintEqualToAnchor(customView.centerXAnchor).active = true
stackView.centerYAnchor.constraintEqualToAnchor(customView.centerYAnchor).active = true
stackView.translatesAutoresizingMaskIntoConstraints = false


let c1 = CustomDrawing()
c1.translatesAutoresizingMaskIntoConstraints = false
c1.backgroundColor = UIColor.redColor()
c1.widthAnchor.constraintEqualToConstant(30).active = true
c1.heightAnchor.constraintEqualToConstant(30).active = true

let c2 = CustomDrawing()
c2.translatesAutoresizingMaskIntoConstraints = false
c2.backgroundColor = UIColor.blueColor()
c2.widthAnchor.constraintEqualToConstant(30).active = true
c2.heightAnchor.constraintEqualToConstant(30).active = true


stackView.addArrangedSubview(c1)
stackView.addArrangedSubview(c2)


XCPlaygroundPage.currentPage.liveView = view

-2

कोड के नीचे आज़माएं,

UIView *view1 = [[UIView alloc]init];
view1.backgroundColor = [UIColor blackColor];
[view1 setFrame:CGRectMake(0, 0, 50, 50)];

UIView *view2 =  [[UIView alloc]init];
view2.backgroundColor = [UIColor greenColor];
[view2 setFrame:CGRectMake(0, 100, 100, 100)];

NSArray *subView = [NSArray arrayWithObjects:view1,view2, nil];

[self.stack1 initWithArrangedSubviews:subView];

मुझे भरोसा है ये काम करेगा। कृपया मुझे बताएं कि क्या आपको अब स्पष्टीकरण की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.