2013-02-13 61 views
7

मैं उस दृश्य या सबव्यू के वास्तविक आयाम कैसे प्राप्त करूं जो मैं नियंत्रित कर रहा हूं? उदाहरण के लिए:आईओएस व्यू के वास्तविक आयाम प्राप्त करें

UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,100)]; 
[self addSubview:firstView]; 

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 230, 120)]; 
[firstView addSubview:button]; 

आप देख सकते हैं, मेरे button वस्तु दृश्य इसे करने के लिए जोड़ा जा रहा है के आयामों से अधिक है।

यह दिमाग है (माना जाता है कि कई वस्तुओं को सबव्यू के रूप में जोड़ा जा रहा है), मैं firstView की वास्तविक चौड़ाई और ऊंचाई कैसे निर्धारित कर सकता हूं?

+0

क्रमश: 230 और 120 है, मुझे नहीं लगता कि आपकी समस्या क्या है। –

+1

firstView.bounds.size.height (चौड़ाई) अपना आकार –

+0

@ एच 2CO3 दें, हालांकि यह नहीं है, यह 240 और 140 बटन के x और y स्थिति के कारण है। वैसे भी, यह सवाल नहीं था .. लक्ष्य दृश्य की सीमाओं से अधिक उपव्यू के प्रोग्रामेटिक परिवर्धन के साथ, क्या आप मूल UIView की वास्तविक सीमाओं की गणना कर सकते हैं? – GeorgeBuckingham

उत्तर

4

आप बटन एक ही चौड़ाई और firstView के रूप में ऊंचाई आप इस तरह UIView की सीमा से संपत्ति का उपयोग करना चाहिए है के लिए करना चाहते हैं:

UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,100)]; 
[self addSubview:firstView]; 

UIButton *button = [[UIButton alloc] initWithFrame:firstView.bounds]; 
[firstView addSubview:button]; 

सिर्फ तुम कर सकते हो firstView की चौड़ाई/ऊंचाई प्राप्त करने के लिए कुछ इस तरह:

CGSize size = firstView.bounds.size; 
NSInteger width = size.width; 
NSInteger height = size.height; 
0

पहला दृश्य वास्तव में 200 x 100 हालांकि, अंदर विचारों काटा नहीं कर रहे हैं जब तक आप clipsToBounds का उपयोग करें।

आपकी समस्या का एक बेहतर समाधान आयामों को पार करने वाले दृश्यों को जोड़ने या दृश्यों को आकार बदलने से रोकने के लिए है ताकि वे उपलब्ध स्थान को उचित रूप से ओवरफ़्लो कर सकें।

(वास्तव में पदानुक्रम में सभी subviews सहित पूर्ण सीमा की गणना करने के लिए मुश्किल नहीं है, बस काम है कि वास्तव में आप कहीं भी नहीं मिलेगा की एक बहुत कुछ है। UIView विचारों उनके कंटेनर से भी बड़ा होने की अनुमति के लिए होता है, लेकिन यह नहीं करता हैका कारण शायद यह है कि क्लिपिंग महंगा है लेकिन एनीमेशन के दौरान जरूरी है, जहां सबव्यू अस्थायी रूप से सीमाओं से बाहर हो जा सकते हैं, इसके बारे में कोई गारंटी नहीं है कि क्या सही तरीके से काम करेगा और बग का स्रोत होने की संभावना है। एक प्रभाव के प्रयोजनों इससे पहले कि वे दृश्य से निकाल दिया जाता है।)

0

firstview.frame.size.width firstview.frame.size.height

+0

फ्रेम दृश्य को घुमाए जाने पर अच्छी तरह से काम नहीं कर सकता है ... http://stackoverflow.com/questions/5361369/uiview-frame-bounds-and-center देखें –