2013-02-09 12 views
5

नीचे didFinishLaunchingWithOptions में एप्लिकेशन प्रतिनिधि से मेरे कोडrootviewcontroller से अलग UIWindow करने के लिए अतिरिक्त subview जोड़ने में असमर्थ

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

CGRect windowFrame = self.window.frame; 
UIView *bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, windowFrame.size.height-100, windowFrame.size.height, windowFrame.size.height)]; 
bottomView.backgroundColor = [UIColor redColor]; 
[self.window addSubview:bottomView]; 

// self.viewController.view.frame = CGRectMake(0, 0, windowFrame.size.width, windowFrame.size.height-100); 

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

return YES; 

मेरे ViewController है freeform के है और आप देख सकते हैं मैं डाल करने के लिए कोशिश कर रहा हूँ उसकी ऊंचाई सिर्फ चारों ओर 245. है एक निचला दृश्य जो 100 अंक ऊंचाई है।

मैं बस इसे सीखने की कोशिश कर रहा हूं।

लेकिन दृश्य हमेशा पूरी स्क्रीन भर रहा है। यदि मैं दृश्य नियंत्रक को विंडोज रूटव्यू कंट्रोलर के रूप में सेट करने पर टिप्पणी करता हूं तो मैं स्क्रीन पर अपना निचला दृश्य देख सकता हूं।

मैं क्या गलत कर रहा हूं? कृपया सलाह दें।

धन्यवाद।

+0

आप इस निचले दृश्य को विंडो नियंत्रक के दृश्य के बजाय विंडो का सबव्यूव क्यों बनना चाहते हैं? आप क्या खत्म करने की कोशिश कर रहे हैं? – rdelmar

+0

मैं यह देखने की कोशिश कर रहा हूं कि विंडोज़ के निचले हिस्से में हमेशा एक टूल बार रखना संभव है, जबकि मैं व्यू कंट्रोलर दृश्यों को स्विच कर सकता हूं। बाद में मुझे पता चला कि नीचे एक टैब होना आसान है और टैब बार सबव्यू को टूलबार इंस्टेंस में बदलना आसान है। – Saran

उत्तर

3

self.window.rootViewController = self.viewController; 

के बजाय

जब मैं कोड

[self.window addSubview:self.viewController.view]; 

मुझे अपेक्षित परिणाम दे दी है और यह freeform आकार नियंत्रित करता है।

यह तब दिखाई देता है जब रूटव्यू कंट्रोलर के रूप में सेट किया जाता है, यह XIB पर फ्रीफॉर्म आकार सेट के बावजूद पूरी उपलब्ध स्क्रीन भरता है।

2

केवल एक sentance

[self.window bringSubviewToFront: bottomView]; 

या

के रूप में खिड़की के bottomView जोड़ें,

[[[[UIApplication sharedApplication] delegate] window] addSubview:bottomView]; 
+0

लेकिन क्यों एक फ्रीफॉर्म व्यू कंट्रोलर दृश्य 245 अंकों की ऊंचाई पूरी स्क्रीन पर कब्जा कर रहा है? मैं उम्मीद कर रहा हूं कि व्यू कंट्रोलर दृश्य शीर्ष 245 अंक ऊंचाई पर कब्जा कर लेता है और नीचे की ओर नीचे 100 अंक ऊंचाई और काले स्क्रीन पर कब्जा कर लेता है। क्या ऐसा नहीं लगता है? – Saran

0

मुझे यकीन है कि तुम क्यों यह करने के लिए कोशिश कर रहे हैं नहीं कर रहा हूँ लिखते हैं, लेकिन आईबी में फ्रीफॉर्म सेटिंग (कम से कम xib फाइलों के लिए) केवल लेआउट उद्देश्यों के लिए प्रतीत होती है। यह दृश्य लोड होने पर आपको प्राप्त होने वाले आकार को वास्तव में प्रभावित नहीं करता है। यदि आप इसे छोटा करना चाहते हैं, तो दृश्य में अपना फ्रेम सेट करेंडिडएपियर: व्यू कंट्रोलर में विधि, ऐप प्रतिनिधि में नहीं - दृश्य अभी तक लोड नहीं किया गया है, इसलिए फ्रेम सेट करना बहुत जल्दी है।

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