NSButton에 이미지가있는 NSButton을 구현했습니다.NSButtonCell 마우스 오버시 이미지, 투명한 배경?
사용자가 안내하면 이미지가 다른 것으로 변경된 다음 다시 켜집니다.
정상 상태 : 호버에
:
나는 NSButtonCell
을 위해 사용하고 코드는 다음과 같습니다
인터페이스 :
#import <Foundation/Foundation.h>
@interface DKHoverButtonCell : NSButtonCell
{
NSImage *_oldImage;
NSImage *hoverImage;
}
@property (retain) NSImage *hoverImage;
@end
구현 :
:#import "DKHoverButtonCell.h"
@interface NSButtonCell()
- (void)_updateMouseTracking;
@end
@implementation DKHoverButtonCell
@synthesize hoverImage;
- (void)mouseEntered:(NSEvent *)event {
if (hoverImage != nil && [hoverImage isValid]) {
_oldImage = [[(NSButton *)[self controlView] image] retain];
[(NSButton *)[self controlView] setImage:hoverImage];
}
}
- (void)mouseExited:(NSEvent *)event {
if (_oldImage != nil && [_oldImage isValid]) {
[(NSButton *)[self controlView] setImage:_oldImage];
[_oldImage release];
_oldImage = nil;
}
}
- (void)_updateMouseTracking {
[super _updateMouseTracking];
if ([self controlView] != nil && [[self controlView] respondsToSelector:@selector(_setMouseTrackingForCell:)]) {
[[self controlView] performSelector:@selector(_setMouseTrackingForCell:) withObject:self];
}
}
- (void)setHoverImage:(NSImage *)newImage {
[newImage retain];
[hoverImage release];
hoverImage = newImage;
[[self controlView] setNeedsDisplay:YES];
}
- (void)dealloc {
[_oldImage release];
[hoverImage release];
[super dealloc];
}
@end
이제
, 여기에 문제가
- 위의 컨트롤은 100 % 효과가 있지만 ("X"반올림 이미지 및 투명 배경 사용) 사용자가 클릭하면 "흰색"- 배경이 보이고 이전의 "투명 "배경
- 어떻게 해결해야합니까?
http://stackoverflow.com/questions/7756312/nsbutton-white-background-when-clicked, HTTP를 : //stackoverflow.com/questions/4801418/nsbuttons-images-lose-transparency-on-selection, 버튼 셀 유형을 "순간 변경"으로 설정하면 충분한 해결책이 될 수 있습니까? – Vervious