0

我将一个按钮和一个图像分配到相同的位置 (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];
}

这是构建后的结果:

截屏

4

1 回答 1

3

代码完全按照您的指示工作;按钮和图像视图都在正确的位置,都在窗口的左下角。

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

没有办法改变图像视图以不同的方式工作——填充图像视图,即使它必须裁剪图像才能这样做。唯一的选择是按比例缩放(保持纵横比),不考虑比例缩放(填充图像视图但可能扭曲图像),并且永远不要缩放。如果您想按比例缩放以填充和裁剪,则必须自己进行。或者,您可能希望更改窗口的大小以匹配图像的大小(或至少是纵横比)。

顺便说一句,在 Cocoa 中将按钮放在图像视图中是不寻常的。大多数视图——那些做特定事情的视图——不应该包含其他视图。按钮和图像视图都应该在一个普通的 NSView 中。

于 2011-06-06T05:03:42.833 回答