2015-03-23 1 views
1

Я создал подкласс NSPopUpButtonCell, чтобы настроить его внешний вид.Подкласс подкатегория NSPopUpButtonCell Анимация закрыта стандартным внешним видом

Когда один из элементов меню выбран из всплывающего окна, он анимирует выделение со стандартным всплывающим окном на OS X 10.10.

Я хотел бы, чтобы это было связано с моим внешним видом.

Customized PopUp

Customized PopUp

Анимационные Выбор

Animating Selection

Моя реализация

- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView { 

    [[NSGraphicsContext currentContext] saveGraphicsState]; 

    NSBezierPath *rectanglePath = [NSBezierPath bezierPathWithRoundedRect:frame xRadius:5.0 yRadius:5.0]; 
    [[NSColor colorWithWhite:0.7 alpha:1.0] setFill]; 
    [rectanglePath fill]; 

    float width = frame.size.width; 
    float height = frame.size.height; 

    NSBezierPath *path = [NSBezierPath bezierPath]; 

    [path moveToPoint:CGPointMake(width - 5, height/2 - 2)]; 
    [path lineToPoint:CGPointMake(width - 10, height/2 - 7)]; 
    [path lineToPoint:CGPointMake(width - 15, height/2 - 2)]; 


    [path moveToPoint:CGPointMake(width - 5, height/2 + 2)]; 
    [path lineToPoint:CGPointMake(width - 10, height/2 + 7)]; 
    [path lineToPoint:CGPointMake(width - 15, height/2 + 2)]; 

    [path setLineWidth:2.0]; 

    [[NSColor darkGrayColor] setStroke]; 
    [path stroke]; 

    [NSGraphicsContext restoreGraphicsState]; 
} 

ответ

1

Вы должны отключить свойство bordered в Interface Builder.

Если граница гранична, вы должны включить ее и затем выключить.

Лучший способ заключается в использовании - (Недействительными) drawBorderAndBackgroundWithFrame: (NSRect) cellFrame INview: (NSView *) ControlView