2012-09-15 22 views
16

मैं विंडो आकार को प्रोग्रामेटिक रूप से कैसे सेट कर सकता हूं? मेरे पास आईबी में एक खिड़की है और मैं इसे बड़ा बनाने के लिए अपने कोड में इसका आकार सेट करना चाहता हूं।एनएसविंडो आकार प्रोग्रामेटिक रूप से सेट करें

उत्तर

23

उपयोग -setFrame:display:animate: अधिकतम नियंत्रण के लिए:

NSRect frame = [window frame]; 
frame.size = theSizeYouWant; 
[window setFrame: frame display: YES animate: whetherYouWantAnimation]; 

ध्यान दें कि खिड़की निर्देशांक क्या आप के लिए इस्तेमाल किया जा सकता से फ़्लिप कर रहे हैं। एक आयत का मूल बिंदु पर अपने नीचे क्वार्ट्ज/कोको में छोड़ दिया OS X पर मूल बिंदु सुनिश्चित करने के लिए है ही रहता है:

NSRect frame = [window frame]; 
frame.origin.y -= frame.size.height; // remove the old height 
frame.origin.y += theSizeYouWant.height; // add the new height 
frame.size = theSizeYouWant; 
// continue as before 
+1

@ लियो के उत्तर में एक बिंदु है, या कम से कम मैंने एक ही चीज़ देखी - +/- को उलट दिया जाना चाहिए। –

+1

मैंने इस कोड को आजमाया है लेकिन फिर भी मेरी खिड़की नीचे की ओर बढ़ रही है। चलती खिड़की को रोकने के लिए कोई समाधान। –

+0

मेरे लिए पूरी तरह से काम करता है। मैं एक विंडो नियंत्रक का प्रोग्रामेटिक रूप से आकार बदलना चाहता था जिसे शीट व्यू के रूप में प्रस्तुत किया जा रहा था। धन्यवाद! – Supertecnoboff

2

उपयोग setFrame:display:animate:

[window setFrame:NSMakeRect(0.f, 0.f, 200.f, 200.f) display:YES animate:YES]; 
+3

पता नहीं क्या NSMakeFrame है: स्क्रीन पर जाने से। मैं एनएसएमकेरेक्ट का उपयोग करता हूं। –

9

यह वास्तव में लगता है है कि +/- जरूरत खिड़की रखने के लिए स्थिति में कर दिया करने के लिए

NSRect frame = [window frame]; 
frame.origin.y += frame.size.height; // origin.y is top Y coordinate now 
frame.origin.y -= theSizeYouWant.height; // new Y coordinate for the origin 
frame.size = theSizeYouWant; 
+0

या बेहतर अभी भी: frame.origin.y + = (frame.size.height - theSizeYouWant.height); – mojuba

0

स्विफ्ट संस्करण

var frame = self.view.window?.frame 
frame?.size = NSSize(width: 400, height:200) 
self.view.window?.setFrame(frame!, display: true) 
संबंधित मुद्दे