2011-06-06 19 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