2011-08-05 6 views
6

可能な状態(オン、オフ、マウス)の3つのイメージを提供する、私のアプリケーション用のカスタムスイッチを作成したいと思います。外観全体が画像に含まれているので、mousedown中にココアがボタンを強調表示(暗く)しないようにします。NSButtonCellをイメージとハイライトでカスタマイズする

現時点ではNSButtonCellサブクラスを作成し、NSButtonTypeMomentaryChangeの斜めボタンをビューにドラッグし、カスタムでボタンセルクラスのタイプを自分のサブクラスに設定しました。サブクラスは、単にいくつかの望ましい行動をしようとして設定するawakeFromNibを実装しています

私は(マニュアルに従って)考え
- (void)awakeFromNib 
{ 
    [self setShowsStateBy:NSContentsCellMask]; 
    [self setHighlightsBy:NSContentsCellMask]; 
} 

は、ボタンのマウスダウン-暗くを無効にします。それはしません。私は立ってどこ

はこれがあると、今私は2つの質問がある:私はちょうどマウスダウンの私の準備画像を表示するボタン型電池のクラスを設定することができ、ボタンの周りに境界線を引く/暗くしませんどのように

  • スイッチの他の動作を実装する、つまり以前の状態に応じてオフ/オン位置を表示し、その状態を他のオブジェクトに正しく伝えることができる、最もクリーンで最も適切な方法は何ですか?

答えて

5

ボタンの種類をオン/オフに設定します。そのセルをサブクラス化する。 この2つの方法を書いてください:

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 
{ 
    if ([self state]) 
    { 
     [onStateImage drawInRect:cellFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 
    } 
    else 
    { 
     [offStateImage drawInRect:cellFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 
    } 
} 
- (void)highlight:(BOOL)flag withFrame:(NSRect)cellFrame inView:(NSView *)controlView 
{ 
    if (flag){ 
     [downStateImage drawInRect:cellFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 

    } 
} 
+0

それはありがとうございます。 – mss

関連する問題