2011-01-10 7 views
9

カスタムアクティブイメージを使用してNSPopUpButtonを作成します。私は2つのイメージを持っています.1つは非アクティブ、もう1つはアクティブです。インターフェイスビルダーで私は画像とAltを設定します。 NSPopUpButtonの画像。イメージは正しく表示されていますが、ボタンをクリックすると、Altキーではなく標準のダークボタン状態が表示されます。画像。ここでNSPopUpButtonアクティブイメージ

は、インターフェイスビルダーパネルのスクリーンショットです:それはクリックされた場合のhttp://cl.ly/0D2c0Y2y0f1Z462d311X

にはどうすればセットアップNSPopUpButtonは私の別の画像を表示することができますか?

+1

注こと'respectFlipped'は' YES'でなければなりません –

+0

ヒントありがとうございました:) – keegan3d

答えて

4

アップルDevのフォーラムからの開発者は、正しい方向に私を指摘:https://devforums.apple.com/message/364824

は、ここで私はIBから代替画像を尊重NSPopUpButtonCellのサブクラスとして思い付いたものです:

- (void)drawImageWithFrame:(NSRect)cellRect inView:(NSView *)controlView{ 
    NSImage *image = self.image; 
    if([self isHighlighted] && self.alternateImage){ 
     image = self.alternateImage; 
    } 

    //TODO: respect -(NSCellImagePosition)imagePosition 
    NSRect imageRect = NSZeroRect; 
    imageRect.origin.y = (CGFloat)round(cellRect.size.height*0.5f-image.size.height*0.5f); 
    imageRect.origin.x = (CGFloat)round(cellRect.size.width*0.5f-image.size.width*0.5f); 
    imageRect.size = image.size; 

    [image drawInRect:imageRect 
       fromRect:NSZeroRect 
       operation:NSCompositeSourceOver 
       fraction:1.0f 
      respectFlipped:YES 
        hints:nil];  
} 
+0

'NSPopUpButton'は、最初のメニュー項目から名前/イメージを取り、代替イメージを持つことができないので、これを追加するだけです。 –

関連する問題