Изображение и кнопка в NSImageView находятся в неправильных положениях - PullRequest
0 голосов
/ 06 июня 2011

Я назначаю кнопку и изображение одной и той же позиции (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 Ответ

3 голосов
/ 06 июня 2011

Код работает точно так, как вы сказали; кнопка и вид изображения находятся в правильном положении, оба в левом нижнем углу окна.

Изображение не заполняет всю высоту вида изображения, поскольку имеет другое соотношение сторон: оно значительно шире, чем оно высокое, а изображение почти квадратное.

Невозможно изменить вид изображения для работы по-другому - заполнить вид изображения, даже если для этого необходимо обрезать изображение. Единственными вариантами являются пропорциональное масштабирование (сохранение соотношения сторон), масштабирование независимо от соотношения (заполнение изображения, но, возможно, искажение изображения), и никогда не масштабировать. Если вы хотите пропорционально масштабировать, чтобы заполнить и обрезать, вам придется сделать это самостоятельно. В качестве альтернативы вы можете изменить размер окна, чтобы он соответствовал размеру или, по крайней мере, соотношению сторон изображения.

Кроме того, в лучшем случае необычно помещать кнопки в представлениях изображений в Какао. Большинство представлений, которые делают что-то конкретное, не должны содержать других представлений. Кнопка и изображение должны находиться внутри простого NSView.

...