質問

コーナーベゼルを伸ばすことなく、さまざまな幅を持つことができるカスタム背景画像を備えたNSButtonを作成する最良の方法は何ですか?私はこれをuibuttonで行う便利な方法があることを知っています: http://jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html しかし、私はnsbuttonで同様のものを見ていません。

役に立ちましたか?

解決

カスタムボタンの背景を持つ必要がありました。これが私がそれをした方法です。 nsbuttonサブクラスとオーバーロードドローレクトメソッドを作成しました。

- (void)drawRect:(NSRect)dirtyRect
{
    // My buttons don't have a variable height, so I make sure that the height is fixed
    if (self.frame.size.height != 22) {
        self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width,
                                22.0f);
    }
    // 
    switch (self.state) {
            // Onstate graphics
        case NSOnState:
            NSDrawThreePartImage(self.bounds, 
                                 [NSImage imageNamed:@"btnmain_lb_h.png"], [NSImage imageNamed:@"btnmain_bg_h.png"], [NSImage imageNamed:@"btnmain_rb_h.png"],
                                 NO, NSCompositeSourceAtop, 1.0, NO);
            // Offstate graphics
        default:
        case NSOffState:
            NSDrawThreePartImage(self.bounds, 
                                 [NSImage imageNamed:@"btnmain_lb.png"], [NSImage imageNamed:@"btnmain_bg.png"], [NSImage imageNamed:@"btnmain_rb.png"],
                                 NO, NSCompositeSourceAtop, 1.0, NO);
            break;
    }

    [super drawRect:dirtyRect];
}

次に、インターフェイスビルダーを使用してボタンを配置し、カスタムグラフィックスを取得するには、クラスを新しいサブクラスに変更する必要があります。

他のヒント

これは私にとって完全にうまくいきました:

[self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];

NSButton 背景画像と同じ便利な方法がありません UIButton (これは奇妙で、Appleがそのギャップを埋めることを期待しています)。サブクラス化のカスタムボタンを作成する必要があります NSView 可変幅と角を自分で処理します。簡単だとは思わないが、それはひどく難しいとは思わない。

このビデオは、シンプルであると思われる方法を説明し、ボタンの画像を1つだけ必要とします。 http://youtu.be/7mzjxpoo_xu

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top