2012-10-14 23 views
5

का पालन नहीं करता है, मैं बस ओएसएक्स ऐप देव के साथ खेल रहा हूं। मैं पूरी तरह से नोब हूँ। मैंने सोचा कि यह आईओएस ऐप देव की तरह सीधे आगे है। लेकिन इस पर जाने के कुछ दिनों के बाद, ऐसा लगता है कि यह इतना आसान नहीं है।एनएसआईमेज व्यू आकार अपनी विंडो के

यहां मैं जो करने की कोशिश कर रहा हूं वह यहां है। मेरे पास एनएसविंडो है। इसमें मैंने एक छवि अच्छी तरह से रखा है (नामकरण के साथ wth? Lol) ठीक है "छवि ठीक है", यह एक एनएसआईमेज व्यू (कोई इरादा नहीं है) है।

तो मैं सिर्फ एनएसआईमेजव्यू के फ्रेम को एनएसविंडो के आकार के बाद आकार बदलने के लिए चाहता हूं। यह इत्ना आसान है।

imageView के रूप में

NSImageView:

यहाँ मैं क्या किया है कि काम नहीं कर रहा है।

NSWindow विंडो की प्रतिनिधि विधि NSWindowDelegate विधि लिखेंडिडसाइज और विंडोडिड रीसाइज़ करें: और छवि के फ़्रेमइज़ का आकार बदलें, इसमें छवि दृश्य के फ्रेम देखें। कोड: (NSImageView एक संपत्ति imageView कहा जाता है।)

- (void)windowDidResize:(NSNotification *)notification { 

    // NSLog(@"resized"); 

    NSRect zWindowRect = [[self window]frame]; 
    NSRect zContentRect = [[self window]contentRectForFrameRect:zWindowRect]; 

    [self.imageView setFrameSize:NSMakeSize(zContentRect.size.width, 
              zContentRect.size.height)]; 

    [self.imageView setNeedsDisplay:YES]; 


} 

इस विधि कहा जाता है (परीक्षण किया है कि NSLog() के साथ), तथापि NSImageView सिर्फ वहाँ मूल आकार के साथ रहता है। मैंने जांच की कि IBOutlet कनेक्शन ठीक है।

क्या देता है? NSImageView का आकार क्यों नहीं बदला जाएगा?

+0

ठीक है, मैंने setFrame या setFrameSize के बजाय सेटबाउंड्स की कोशिश की, अब NSImageView आकार बदलता है, लेकिन सबसे अजीब तरीके से। जब मैं एनएसविंडो को बड़ा करता हूं, तो एनएसआईमेज व्यू छोटा हो जाता है, और जब मैं एनएसविंडो आकार को कम करता हूं, तो NSIMageView बड़ा हो जाता है ... घातीय रूप से। तो, कोई जानता है कि यहाँ क्या हो रहा है? – GeneCode

उत्तर

3

ठीक है। यह एक आदत बन रहा है। फिर से अपने सवाल का जवाब।

ऐसा लगता है कि यह व्यवहार इंटरफ़ेस बिल्डर की "ऑटो लेआउट" सुविधा के कारण है।

इसे ठीक करने के लिए, MainMenu.xib में बस "ऑटो लेआउट" अक्षम करें। SEE HERE FOR EXPLANATIONS

साइट की समयसीमा समाप्त होने पर: केवल MainMenu.xib पर क्लिक करें, फिर XCode के उपयोगिता पैनल में पहले टैब, फ़ाइल पर जाएं। और उसके आगे "ऑटो लेआउट का उपयोग करें" चेकबॉक्स होना चाहिए। इसे अनचेक करें।

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