2011-08-30 16 views
6

मैं पैरेंट UIView (parent_UIView) के उप-दृश्य के रूप में एक उप UIView (sub_UIView) को स्थानांतरित करना चाहता हूं। जब parent_UIView आकार बदल रहा/चल रहा है, sub_UIView parent_UIView की सापेक्ष स्थिति रहेगा। उदाहरण के लिए, sub_UIView parent_UIView के निचले दाएं कोने पर है। जब parent_UIView आगे बढ़ता है, तो sub_UIView स्वचालित रूप से parent_UIView के निचले दाएं कोने पर रहेगा।स्वचालित रूप से आईओएस में सापेक्ष स्थिति को कैसे संभालें?

मैं parent_UIView के फ्रेम को स्थानांतरित करते समय sub_UIView के फ्रेम को अद्यतन करके मैन्युअल रूप से ऐसा करने में कामयाब रहा, लेकिन आईओएस में इसे स्वचालित रूप से कैसे किया जाए? क्या इसके लिए कोई गुण हैं? (सबव्यूज़ का आकार बदलने के लिए ऑटोरेसाइजिंगस्क के समान)

धन्यवाद!

+0

आप 'autoresizingMask' उचित रूप से अपने बच्चे को' UIView' पर क्यों निर्धारित नहीं कर सकते? आखिरकार, यदि आप इसे किसी अन्य दृश्य के बच्चे बनाते हैं तो यह एक सबव्यूव है! –

+0

उत्तर के लिए धन्यवाद। मैंने इसे सबव्यूव में किया: – androidkc

+0

[स्वयं सेटऑटोरोसिंगमास्क: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin]; लेकिन लगता है कि काम नहीं करता है। – androidkc

उत्तर

4

वर्ष प्रतिक्रिया अपडेट किया गया, कि केवल मास्क

autolayout (आईओएस 6)

आकार बदलने iOS 6 में उल्लेख किया है, autolayout भी जुड़ गया, यद्यपि, थोड़े बदसूरत एक स्टोरीबोर्ड/xib में XCode के साथ काम करने के लिए। Autolayout व्याख्या करने के लिए रास्ता बहुत बड़ा है, लेकिन इसका सार यह है कि यह पदानुक्रम के भीतर विचारों के बीच नियमों का एक सेट है। इस प्रकार, आप एक दृश्य की एक्स स्थिति को मूल दृश्य की दाएं सीमा पर चिपका सकते हैं। Auto Layout Programming Guide

autoresizing मास्क (आईओएस 2)

देखें आकार निरीक्षक में विकल्पों पर एक नजर डालें:

Autoresizing and positioning inside a view

यह

myView.autoresizingMask = UIViewAutoresizingMaskFlexibleTopMargin | 
    UIViewAutoresizingMaskFlexibleLeftMargin | 
    UIViewAutoresizingMaskFlexibleWidth | 
    UIViewAutoresizingMaskFlexibleHeight; 

कर के बराबर है ध्यान दें कि कोड द्वारा इसे करने और आईबी के माध्यम से ऐसा करने में अंतर है। सीमाओं के लिए आईबी ऑटोरेसीकरण सेटिंग्स स्ट्रैट्स के रूप में काम करती है, सही का चयन करने के लिए, उदाहरण के लिए, "मेरा दायां सीमा अब पर्यवेक्षक की दाएं सीमा पर फंस गई है"।

दूसरी तरफ, कोड विपरीत है, जहां आपको यह निर्दिष्ट करने की आवश्यकता है कि कौन सी सीमाएं स्ट्रैट-एड नहीं हैं, उर्फ। वे लचीले हैं। ऊंचाई और चौड़ाई सामान्य रूप से काम करता है।

लेआउट subviews (आईओएस 2, लेकिन के लिए iOS5 + gotchas)

सब कुछ विफल रहता है,, हर जगह मैन्युअल स्थिति निर्धारण कर मैं उस स्थिति में किया गया है, और यह सिर्फ unmaintanable की ओर जाता है शुरू नहीं करते हैं, स्पेगेटी कोड, जहां एक ही दृश्य गुणों के साथ तीन या अधिक विधियां गड़बड़ कर रही हैं।

इसके बजाय, UIView -layoutSubviews पर अपनी सभी कस्टम स्थिति को करना पसंद करते हैं। इस विधि को आवश्यकतानुसार कहा जाता है जब setNeedsLayout ट्रिगर किया गया है, उदाहरण के लिए, जब चौड़ाई दृश्य बदलती है, तो सबव्यूज़ लेआउट सबव्यूज़ ईवेंट प्राप्त करते हैं। घूर्णन इंटरफेस को भी बहुत आसान बनाता है, क्योंकि इस विधि को नई चौड़ाई के लिए बुलाया जाता है, यह निर्धारित करने के लिए कि एनीमेशन कैसा दिखता है।

ध्यान रखें कि लेआउट सबव्यू ऑटो ऑटो लेआउट/ऑटो-रीसाइजिंग मास्क के बाद काम करता है।