2014-09-21 6 views
6

में अलग-अलग चित्र/परिदृश्य दृश्य मैं ऐप दृश्यों को डिजाइन करने के लिए स्टोरीबोर्ड और एक्सकोड 6 का उपयोग कर रहा हूं लेकिन मुझे इस समस्या का सामना करना पड़ रहा है: मैं पोर्ट्रेट और लैंडस्केप मोड के लिए सबव्यूज़ के विभिन्न पदों को असाइन करना चाहता हूं। उदाहरण के लिए:स्टोरीबोर्ड और स्विफ्ट

Portrait Landscape

अब जब से मैं इस प्रोग्राम के रूप में willRotateToInterfaceOrientation और स्थिति पट्टी के साथ iPad उन्मुखीकरण पाने के लिए हासिल कर लिया है।

एक्सकोड 6 के साथ, पोर्ट्रेट और परिदृश्य के लिए आईफोन लेआउट अलग हैं, लेकिन आईपैड (नियमित, नियमित) के लिए समान हैं। बाधाओं के साथ उन पदों को हासिल करना संभव है?

धन्यवाद।

उत्तर

7

हां, आप इसे बाधाओं के साथ कर सकते हैं।

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

Constraint Setup

इसके बाद, तो हम उन प्रोग्राम के रूप में संशोधित कर सकते हैं की कमी आप 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) 
    } 
} 
+0

अच्छा समाधान! ! लेकिन, मैं बस सोच रहा था कि डिवाइस रोटेशन के दौरान प्रोग्रामेटिक रूप से बाधाओं को जोड़ना और निकालना अच्छा है या नहीं। –

+0

@RashmiRanjanmallick, अच्छा सवाल! हालांकि, हम बाधाओं को जोड़/हटा नहीं रहे हैं। हम सिर्फ उनके स्थिरांक संशोधित कर रहे हैं। संशोधित बाधा स्थिरांक सामान्य अभ्यास है, खासकर UIView एनीमेशन या डिवाइस रोटेशन में। –

+0

धन्यवाद, मुझे आश्चर्य है कि धरती पर उन्होंने स्टोरीबोर्ड क्यों नहीं बनाया जैसे पोर्ट्रेट मोड का चयन करें और पोर्ट्रेट लेआउट सेट करें, और लैंडस्केप मोड चुनें और लैंडस्केप लेआउट सेट करें। – fullMoon

1

मैं जानता हूँ कि यह एक पुरानी पोस्ट है लेकिन, info.I नीचे दिए गए चरणों की कोशिश की और यह उम्मीद के रूप में काम कर रहा है बस के लिए: एक बार फिर, अपने उदाहरण का उपयोग करते हुए, कोड कुछ इस तरह लग रहा है।

चरण 1। देखें नियंत्रक का चयन करें, आकार वर्ग नियंत्रण से किसी भी का चयन करें। और इस मोड में दृश्य जोड़ें। Any Mode चरण 2। आकार वर्ग नियंत्रण से सभी iPhones चित्रित करने के लिए मोड बदलें, पोर्ट्रेट मोड के दृश्य के लिए बाधाएं जोड़ें। Potrait mode चरण 3। इसी प्रकार सभी iPhones को परिदृश्य में मोड बदलें, लैंडस्केप मोड के दृश्य के लिए बाधाएं जोड़ें।

कृपया ध्यान दें: बाधाओं और आड़े

0

प्रेस प्लस "+" एक बाधा के लगातार बगल में अभी स्वतंत्र हैं और विभिन्न स्क्रीन के लिए वेरिएशन जोड़ते:

enter image description here

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