कई autolayout समस्याओं की तरह, हाँ, आप क्या कह रहे हैं क्या कर सकते हैं, लेकिन यह स्पष्ट से दूर है। अगर मुझे वास्तव में 300pt या 175pt की आवश्यकता होती है, तो भी, मैं घूर्णन पर शीर्ष बाधा को समायोजित करने के लिए प्रेरित हो सकता हूं।
लेकिन क्या आप जानते हैं कैसे रोटेशन घटनाओं से निपटने के बिना ऐसा करना चाहते हैं तो आप:
सेट 175 के लिए आवश्यक न्यूनतम ऊपरी हाशिया;
300 की निम्न प्राथमिकता पसंदीदा शीर्ष मार्जिन सेट करें (जो परिदृश्य में संतुष्ट नहीं होगा); और
कम स्पष्ट रूप से, आपको एक न्यूनतम न्यूनतम ऊंचाई भी चाहिए (ताकि परिदृश्य में, यह शीर्ष मार्जिन 300 बनाने के लिए निम्न प्राथमिकता अनुरोध को पूरा न करने के बारे में पता चलेगा)। के साथ संयुक्त
@"V:|-(>=175)-[tableView(>=120)]-5-|"
:
आप, उदाहरण के लिए, इस्तेमाल कर सकते हैं (जाहिर है जो कुछ भी आप के लिए समझ में आता है के साथ 5 की मेरी निचला हाशिया की जगह है, लेकिन उसके अनुसार tableview की न्यूनतम ऊंचाई को समायोजित):
@"V:|-([email protected])-[tableView]"
(जाहिर है, आप क्षैतिज अक्ष के लिए बाधाओं को भी होता है, लेकिन मैं संक्षिप्तता की खातिर उन छोड़ देते हैं।)
0,123,
यह स्वीकार्य रूप से, न्यूनतम तालिका ऊंचाई को सटीक रूप से निर्दिष्ट करने के लिए, अस्पष्ट रूप से अपरिहार्य है, लेकिन मैंने ऑटोलायआउट को यह बताने का कोई और तरीका नहीं देखा कि किस स्थिति में इसे 300pt के वैकल्पिक शीर्ष स्थान को संतुष्ट नहीं किया जाना चाहिए।
तुम भी y = mx + bconstraintWithItem
के सूत्र का उपयोग कर के साथ ऐसा कर सकते हैं।हाँ, मैं आप कैसे दृश्य स्वरूप भाषा के साथ ऐसा करने के लिए कहा है, लेकिन अगर आप constraintWithItem
उपयोग करते हैं, आप कम से कम तालिका ऊंचाई निर्दिष्ट करने के लिए नहीं है, बल्कि तुम सिर्फ ऊपरी हाशिया की तरह तो सेट कर सकते हैं:
constraint = [NSLayoutConstraint constraintWithItem:self.tableView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.tableView.superview
attribute:NSLayoutAttributeBottom
multiplier:multiplier
constant:constant];
स्पष्ट रूप से, चाल multiplier
और constant
निर्धारित करने का तरीका है ताकि आपको चित्र में 300 pt और परिदृश्य में 175 pt प्राप्त हो। ,
CGFloat multiplier = (300.0 - 175.0)/(superviewPortraitHeight - superviewLandscapeHeight);
CGFloat constant = 175.0 - superviewLandscapeHeight * multiplier;
फिर से (और,, मैं मान लेंगे कि आप अन्य बाधाओं ताकि tableview अस्पष्ट से परिभाषित नहीं है निर्दिष्ट करेंगे: एक छोटे से बीजगणित कर रही है, आपको लगता है कि आप उन मूल्यों को इस प्रकार की गणना कर सकते देखेंगे उदाहरण के लिए बाएं, दाएं, और नीचे की बाधाओं को सेट करें, जो विजुअल प्रारूप भाषा में किया जा सकता है।)
बहुत बढ़िया, बाधा WithItem सही काम करता है। यह कुछ समझ में आता है और इसे अन्य स्थानों का उपयोग करने में सक्षम होना चाहिए जहां मुझे वही काम करने की आवश्यकता होगी। मुझे लगता है कि मैं इसे बाधाओं के साथ करना चाहता था क्योंकि यह मेरी समझ की बाधाओं को घुमावदार अभिविन्यास प्रतिनिधि (जैसे रेडेलर सुझाए गए) का उपयोग करने की आवश्यकता को प्रतिस्थापित करने के लिए माना जाता है? – Padin215
@ लॉग 139 हाँ, लंबे समय तक, ऐप्पल चाहता है कि डेवलपर्स किसी डिवाइस के अभिविन्यास के बजाए पर्यवेक्षण के 'सीमाओं 'पर तर्कसंगत तर्क पर ध्यान केंद्रित करें। लेकिन मेरे हिस्से का आश्चर्य है कि ऑटोटायआउट वास्तव में प्राइमटाइम के लिए तैयार है या नहीं। यह बहुत जटिल है। वीएफएल में कुछ उल्लेखनीय कमीएं हैं। ऑटोलायआउट और डिवाइस और अभिविन्यास-विशिष्ट डिजिटल संपत्तियों की लचीलापन के बीच एक संज्ञानात्मक विसंगति भी है। मैं आपके उत्साह के लिए आपकी टोपी को टिपता हूं, लेकिन मेरे लिए, जूरी अभी भी बाहर है। व्यक्तिगत रूप से मैं उपरोक्त कोड को पारंपरिक दृष्टिकोणों में सुधार के रूप में घोषित करने में संकोच करता हूं। – Rob
यह नहीं होना चाहिए @ @ "वी: | - (> = 175) - [tableView (> = 120)] - 5- |" '? –