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 に答える