2011-07-30 5 views
6

मैंने कुछ गलत करना चाहिए, लेकिन पता है कि न ..UIView setFrame समस्या

मैं इस कोड के साथ एक subview जोड़ने का प्रयास:

subMenuView = [[UISubMenuViewMainController alloc] init]; 

[subMenuView.view setFrame:CGRectMake(10,0,990,100)]; 

subMenuView.view.backgroundColor = [UIColor whiteColor]; 

[self.view addSubview:subMenuView.view]; 

मैं मेरे विचार में होना चाहते हैं (10,0) और चौड़ाई/ऊंचाई में 990/100

है, लेकिन मुझे नहीं अपेक्षित परिणाम

मुझे चलो अगर मैं गलत हूँ, अगर मैं केंद्र में एक 10x10 वर्ग दृश्य चाहते मैं निम्न पंक्ति जोड़ने के लिए मिलती है:

[subMenuView.view setFrame:CGRectMake(512,384,10,10)]; 

जो मुझे नहीं मिलता है, स्थिति सही है, लेकिन चौड़ाई/ऊंचाई गलत है, कोई विचार?

+0

http://stackoverflow.com/questions/18850871/cgrectmake-is-not-working-with-uiview –

उत्तर

7

समस्या

self.view.autoresizesSubviews = NO; 
0

कोड एक छोटे से अपरंपरागत है, लेकिन मैं एक अनुमान यह है क्योंकि आप को देखने के फ्रेम सेट कर रहे हैं इससे पहले कि आप एक subview के रूप में जोड़ने खतरे करेंगे। इसलिए सबव्यू की स्थिति शायद इसे देखने से पहले लेआउट सबव्यूव्यू द्वारा बदल जाती है।

तो पिछले कोड की दूसरी पंक्ति डाल कोशिश करते हैं और है कि अगर काम कर देता है देखते हैं।

+0

मुझे सेटफ्रेम के साथ बिल्कुल वही समस्या मिलती है और कोड स्निपेट –

+0

के अंत में मैं अवांछित नहीं हूं क्योंकि मैं जोड़ रहा हूं इस विधि के साथ कई अन्य नियंत्रण (UIButton) पहले और सभी सही काम करता है। –

-1

का उपयोग करके देखें ints के बजाय तैरता:

[subMenuView.view setFrame:CGRectMake(10,0,990,100)]; 

रहे हैं:

[subMenuView.view setFrame:CGRectMake(10.0f,0.0f,990.0f,100.0f)]; 
+2

एक ही समस्या है, मुझे लगता जीसीसी मेरी पूर्णांक फ्लोट करने के लिए संकलन समय पर किसी भी समस्या –

10

की स्थापना द्वारा तय अगर आप autolayout उपयोग करते हैं, कॉल setFrame कोई फायदा नहीं है, setFrame

से पहले setTranslatesAutoresizingMaskIntoConstraints फोन की कोशिश
+4

सेट withtout हाँ या करने के लिए नहीं डाली कर सकते हैं? यह उदाहरण – Raptor

+2

आप क्या यह करने के लिए सेट किया जाना चाहिए उल्लेख करना चाहिए प्रदान करने के लिए बेहतर है। – ge0rges

+3

इसे YES पर सेट करने के लिए मेरे लिए काम किया। – Nerrolken