9

カスタムアクティブイメージを使用してNSPopUpButtonを作成したいと思います。2つの画像があります。1つは非アクティブ用、もう1つはアクティブ用です。Interface Builderで、ImageとAltを設定しました。NSPopUpButtonの画像。画像は正しく表示されていますが、ボタンをクリックすると、Altではなく標準の暗いボタンの状態が表示されます。画像。

これがInterfaceBuilderパネルのスクリーンショットです:http://cl.ly/0D2c0Y2y0f1Z462d311X

クリックしたときに代替画像を表示するようにNSPopUpButtonを設定するにはどうすればよいですか?

4

1 に答える 1

5

Apple 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];    
}
于 2011-02-21T09:32:42.023 に答える