2011-06-06 53 views
0

我將按鈕和圖像分配到相同的位置(0,0),但它們繪製在不同的位置。爲什麼會發生?NSImageView中的圖像和按鈕位置錯誤

這裏是我的代碼:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 

    // Insert code here to initialize your application 
    [window makeKeyWindow]; 
    [window setFrame:NSMakeRect(0, 0, 500, 468) display:YES]; 
    //[window setFrame:[[NSScreen mainScreen]frame] display:YES]; 
    [window setBackgroundColor:[NSColor clearColor]]; 
    [window center]; 
    [[window contentView] setAutoresizesSubviews:YES]; 

    NSImageView *subView = [[NSImageView alloc]initWithFrame:NSMakeRect(0, 0, 500, 468)]; 
    [subView setImage:[NSImage imageNamed:@"Flowers.jpg"]]; 
    [subView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 
    [subView setAutoresizesSubviews:YES]; 

    NSButton *subButton = [[NSButton alloc]initWithFrame:NSMakeRect(0, 0, 100, 40)]; 
    [subButton setTitle:@"testing"]; 
    [subButton setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable|NSViewMaxXMargin|NSViewMaxYMargin|NSViewMinXMargin|NSViewMinYMargin]; 
    [subView addSubview:subButton]; 
    [window setContentView:subView]; 
} 

,這裏是建成後的結果:

Screenshot

回答

3

的代碼,你告訴它一樣工作;按鈕和圖像視圖位於窗口左下角的正確位置。

圖片沒有填充圖片視圖的整個高度,因爲它具有不同的高寬比:它比寬高很多,而圖片視圖幾乎是正方形。

沒有辦法改變圖像視圖的工作方式 - 填充圖像視圖,即使它必須裁剪圖像。唯一的選擇是比例縮放(保留寬高比),縮放比例(填充圖像視圖但可能會扭曲圖像),並且不會縮放。如果你想按比例縮放填充和裁剪,你必須自己做。或者,您可能希望更改窗口大小以匹配圖像的大小(或至少是寬高比)。

順便說一下,在Cocoa中將按鈕放在圖像視圖中是最不尋常的。大多數意見 - 那些做特定事情的意見 - 不應該包含其他意見。按鈕和圖像視圖都應該在普通的NSView中。

+0

你說「圖像沒有填滿圖像視圖的整個高度,因爲它具有不同的寬高比」,那麼我可以計算寬高比變成相同嗎? – user718408 2011-06-07 07:53:45

+0

當然,儘管通過增加因子來劃分圖像尺寸可能會更簡單,從1開始(無變化),直到達到適合屏幕的尺寸。請記住考慮框架矩形和內容矩形之間的區別。框架矩形稍大。 NSWindow有方法在框架和內容矩形之間進行轉換。 – 2011-06-07 09:38:39

+0

感謝您的幫助。我有另一個問題。現在(0,0)座標在左下角,我想要改變左上角的(0,0)座標。我可否? – user718408 2011-06-08 04:12:54