2015-08-26 17 views
5

मेरे पास UIButtonUIView के अंदर है, मेरे UIButton में स्टोरीबोर्ड में सेट की गई बाधाएं हैं I अब, मैं के केंद्र को UIView के केंद्र में सेट करना चाहता हूं। मैं प्रोग्रामेटिक तरीके से कैसे करूं?प्रोग्रामिंग के लिए यूबिटन का केंद्र सेट करें - स्विफ्ट

उत्तर

5

यह दृष्टिकोण NSLayoutConstraint का उपयोग कर उपयोग कर रहा है जहां self.cenBut आपके बटन के लिए आईबीआउटलेट है।

func setupConstraints() { 
    let centerX = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0) 
    let centerY = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0) 
    let height = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 22) 
    self.cenBut.translatesAutoresizingMaskIntoConstraints = false 
    self.view.addConstraints([centerX, centerY, height]) 
} 

viewDidLoad में()

self.view.removeConstraints(self.view.constraints) 
self.setupConstraints() 
+0

मैंने यह भी कोशिश की लेकिन यह मुझे एक त्रुटि देता है, वैसे भी मदद के लिए धन्यवाद! –

11

आप की जरूरत है तुम भी x और y निर्दिष्ट कर सकते हैं .center संपत्ति की तरह

myButton.center = self.view.center 

की कोशिश करो।

myButton.center.x = self.view.center.x // for horizontal 
myButton.center.y = self.view.center.y // for vertical 
0

मैं

yourButton.setCenter(self.view.center); 

हो लेकिन यदि आप प्रोग्राम के लिए एक दृश्य के फ्रेम निर्धारित करते हैं, अपने लेआउट की कमी के रूप में इरादा काम नहीं कर सकते ध्यान में रखना चाहिए।

0

जब से तुम बाधाओं का उपयोग कर रहे हैं, तो आप केंद्र स्थापित करने के लिए, ताकि आप के रूप में अच्छी केंद्र स्थापित करने के लिए बाधाओं को उपयोग करने की आवश्यकता नहीं कर सकेंगे:

let centerYCon = NSLayoutConstraint(item: labelMessage, 
     attribute: .CenterY, 
     relatedBy: .Equal, 
     toItem: contentView, 
     attribute: .CenterY, 
     multiplier: 1.0, 
     constant: 0.0); 
    contentView.addConstraint(centerYCon); 


    let centerXCon = NSLayoutConstraint(item: labelMessage, 
     attribute: .CenterX, 
     relatedBy: .Equal, 
     toItem: contentView, 
     attribute: .CenterX, 
     multiplier: 1.0, 
     constant: 0.0); 
    contentView.addConstraint(centerXCon); 

मैं यह सोचते कर रहा हूँ कि तुम क्या "प्रोग्राम के रूप में जानते हैं "autolayout बाधाओं के साथ मतलब है। यदि आप वास्तव में ऑटोलायआउट का उपयोग कर रहे हैं तो आपने अपने बटन के गुणों को सेट करने के लिए सेट किया होगा ताकि ट्रांस्लेट्सऑटोरोज़िंग मास्कइनो कॉन्स्ट्रेनेंट्स को झूठी हो।

+0

धन्यवाद, मैं कैसे गलत पर setTranslatesAutoresizingMaskIntoConstraints सेट हो जाएगा? –

+0

मैं पहले से ही यह कोशिश करता हूं लेकिन यह मुझे अभी भी एक त्रुटि देता है –

+0

त्रुटि क्या है? – Loxx

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