NSImageView中的图像和按钮位置错误

时间:2011-06-06 04:17:47

标签: objective-c cocoa macos nsbutton nsimageview

我将按钮和图像分配到相同的位置(0,0),但它们是在不同的位置绘制的。为什么会这样?

这是我的代码:

- (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

1 个答案:

答案 0 :(得分:3)

代码正如你所说的那样工作;按钮和图像视图位于窗口左下角的正确位置。

图像没有填充图像视图的整个高度,因为它具有不同的宽高比:它比它高很宽,而图像视图几乎是方形。

无法更改图像视图以使其工作方式不同 - 即使必须裁剪图像,也无法填充图像视图。唯一的选择是按比例缩放(保留纵横比),无论比例如何缩放(填充图像视图但可能扭曲图像),并且不进行缩放。如果你想按比例缩放以填充和裁剪,你必须自己做。或者,您可能希望更改窗口的大小以匹配图像的大小或至少与宽高比相匹配。

顺便说一句,在Cocoa中将按钮放在图像视图中是不常见的。大多数视图 - 那些执行特定操作的视图 - 不应包含其他视图。按钮和图像视图应分别位于普通NSView内。