2014-12-29 7 views
34

मैं UIButton को एक निश्चित (स्थिर) चौड़ाई प्रोग्रामेटिक रूप से देने के लिए बाधा सेट करना चाहता हूं। मुझे पता है कि मैं इसे बाधाओं के साथ कर सकता हूं विथविज़ुअलफॉर्मैट, लेकिन मैं कोड में अपनी सभी बाधाओं के लिए बाधा का उपयोग कर रहा हूं। मैं जिज्ञासा/स्थिरता के लिए सोच रहा था अगर बाधा के साथ ऐसा करने का कोई तरीका था।आईएसओ NSLayoutConstraint बाधा का उपयोग कर निश्चित चौड़ाई WithItem

उत्तर

100

मेरा समाधान मिला। बस नहीं के बराबर करने के लिए अन्य वस्तु, और NSLayoutAttributeNotAnAttribute करने के लिए अन्य विशेषता (इस मैं क्या के बारे में सोच करने में विफल रहा था) की स्थापना की और निर्धारित चौड़ाई के लिए निरंतर पैरामीटर का उपयोग:

[self addConstraint:[NSLayoutConstraint constraintWithItem:myButton 
     attribute:NSLayoutAttributeWidth 
     relatedBy:NSLayoutRelationEqual 
     toItem:nil 
     attribute:NSLayoutAttributeNotAnAttribute 
     multiplier:1.0 
     constant:200]]; 

संपादित करें: इस जवाब अभी भी प्राप्त करने के लिए लगता है के बाद से

self.addConstraint(NSLayoutConstraint(
     item: myButton, 
     attribute: .width, 
     relatedBy: .equal, 
     toItem: nil, 
     attribute: .notAnAttribute, 
     multiplier: 1.0, 
     constant: 200)) 
+1

अपने आप पर इतनी मेहनत मत बनो होगा। इन चीजों को याद करना आसान है। – moonman239

+0

आप NSLayoutConstraint.activateConstraints ([...]) का भी उपयोग कर सकते हैं, "आमतौर पर, इस विधि का उपयोग व्यक्तिगत रूप से प्रत्येक बाधा को सक्रिय करने से अधिक कुशल है।" ऐप्पल डॉक्स से – nmdias

4

यहाँ निश्चित चौड़ाई के साथ बटन के लिए एक सरल कोड है: विचारों का एक उचित हिस्सा है, मैं मैं स्विफ्ट वाक्य रचना जोड़ना होगा सोचा।

दृश्य प्रारूप: -

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:  [myButton(==50)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(myButton)]]; 

दृश्य प्रारूप का उपयोग कर जहां self.view अपने बटन के superview है और myButton अपने बटन का नाम है और 50 myButton की चौड़ाई है बाधा के लिए इस कोड का प्रयोग करें। वांछित बाधा प्राप्त करने के अनुसार आप इन मानों को बदल सकते हैं।

constraintWithItem प्रारूप: -

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:myButton attribute: NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:50.0]]; 

constraintWithItem प्रारूप का उपयोग कर जहां self.view अपने बटन के superview है और myButton अपने बटन का नाम है और 50 myButton की चौड़ाई है बाधा के लिए इस कोड का प्रयोग करें। वांछित बाधा प्राप्त करने के अनुसार आप इन मानों को बदल सकते हैं।

5

तेज में:

let width = 120 
let constraint = NSLayoutConstraint(
    item: myView, 
    attribute: .Width, 
    relatedBy: .Equal, 
    toItem: nil, 
    attribute: .NotAnAttribute, 
    multiplier: 1.0, 
    constant: width) 
NSLayoutConstraint.activateConstraints([constraint]) 

तो फिर तुम बाधा के निरंतर मूल्य

constraint.constant = width * 2 
6

कैसे के बारे में Layout Anchors का उपयोग कर बदल सकते हैं?

myView.widthAnchor.constraintEqualToConstant(29).active = true 
0

कोई स्पष्ट ऊंचाई (28) की तलाश की तुलना में, एक बेहतर विचार एक height बाधा देखने के लिए ...

loginButton.constraints.first(where: { $0.firstAttribute == .height })?.constant = 40 
संबंधित मुद्दे