हां, आप इसे बाधाओं के साथ कर सकते हैं।
सबसे पहले, आपको पर्यवेक्षण में बाधाएं बनाने की आवश्यकता है, न कि निकटतम दृश्य पर। पड़ोसी विचार स्थिति बदल रहे होंगे, इसलिए हम नहीं चाहते कि बाधाएं अन्य विचारों के सापेक्ष हों। बाधाओं को सेट करने के उदाहरण के लिए नीचे स्क्रीनशॉट देखें।
इसके बाद, तो हम उन प्रोग्राम के रूप में संशोधित कर सकते हैं की कमी आप IBOutlets को संशोधित किया जाएगा लिंक। ,
@IBOutlet var greenViewTrailingConstraint: NSLayoutConstraint!
@IBOutlet var greenViewBottomConstraint: NSLayoutConstraint!
@IBOutlet var redViewTopConstraint: NSLayoutConstraint!
@IBOutlet var redViewLeadingConstraint: NSLayoutConstraint!
@IBOutlet var redViewBottomConstraint: NSLayoutConstraint!
@IBOutlet var blueViewTrailingConstraint: NSLayoutConstraint!
@IBOutlet var blueViewTopConstraint: NSLayoutConstraint!
@IBOutlet var blueViewLeadingConstraint: NSLayoutConstraint!
अंत में बाधा UIInterfaceOrientation के आधार पर स्थिरांक अद्यतन: अपनी उदाहरण के लिए, इन बाधाओं होगा।
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
let padding: CGFloat = 16.0
// since we're calling this before the rotation, the height and width are swapped
let viewHeight = self.view.frame.size.width
let viewWidth = self.view.frame.size.height
// if landscape
if UIInterfaceOrientationIsLandscape(toInterfaceOrientation) {
greenViewTrailingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
greenViewBottomConstraint.constant = padding
blueViewTopConstraint.constant = (viewHeight/2.0) + (padding/2.0)
blueViewTrailingConstraint.constant = padding
blueViewLeadingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
redViewTopConstraint.constant = padding
redViewBottomConstraint.constant = (viewHeight/2.0) + (padding/2.0)
redViewLeadingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
} else { // else portrait
greenViewBottomConstraint.constant = (viewHeight/2.0) + (padding/2.0)
greenViewTrailingConstraint.constant = padding
blueViewTopConstraint.constant = (viewHeight/2.0) + (padding/2.0)
blueViewTrailingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
blueViewLeadingConstraint.constant = padding
redViewLeadingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
redViewBottomConstraint.constant = padding
redViewTopConstraint.constant = (viewHeight/2.0) + (padding/2.0)
}
}
स्रोत
2014-10-20 19:02:09
अच्छा समाधान! ! लेकिन, मैं बस सोच रहा था कि डिवाइस रोटेशन के दौरान प्रोग्रामेटिक रूप से बाधाओं को जोड़ना और निकालना अच्छा है या नहीं। –
@RashmiRanjanmallick, अच्छा सवाल! हालांकि, हम बाधाओं को जोड़/हटा नहीं रहे हैं। हम सिर्फ उनके स्थिरांक संशोधित कर रहे हैं। संशोधित बाधा स्थिरांक सामान्य अभ्यास है, खासकर UIView एनीमेशन या डिवाइस रोटेशन में। –
धन्यवाद, मुझे आश्चर्य है कि धरती पर उन्होंने स्टोरीबोर्ड क्यों नहीं बनाया जैसे पोर्ट्रेट मोड का चयन करें और पोर्ट्रेट लेआउट सेट करें, और लैंडस्केप मोड चुनें और लैंडस्केप लेआउट सेट करें। – fullMoon