2016-10-06 14 views
0

У нас есть обычай NSPopUpButtonCell и перекрывая этот метод:Как могло возникнуть проблема `-saveGraphicsContext` и` -restoreGraphicsContext` в 10.10?

- (void)drawBorderAndBackgroundWithFrame:(NSRect)cellFrame inView:(NSView*)controlView 
{ 
    [[NSGraphicsContext currentContext] saveGraphicsState]; 
    CGFloat strokeWidth = 1; 
    cellFrame = NSInsetRect(cellFrame, strokeWidth/2.0, strokeWidth/2.0); 

    NSBezierPath* rectanglePath = [NSBezierPath bezierPathWithRoundedRect:cellFrame xRadius:2 yRadius:2]; 
    rectanglePath.lineWidth = strokeWidth; 

    if (self.horizontalImageOffset != 0) 
    { 
     CGRect stateImageRect = [self stateImageRectForBounds:cellFrame]; 
     CGFloat verticalSeparatorX = NSMaxX(stateImageRect); 

     NSBezierPath* verticalSeparator = [NSBezierPath bezierPath]; 
     [verticalSeparator moveToPoint:NSMakePoint(verticalSeparatorX, NSHeight(cellFrame) - strokeWidth)]; 
     [verticalSeparator lineToPoint:NSMakePoint(verticalSeparatorX, strokeWidth + 1)]; 
     verticalSeparator.lineWidth = strokeWidth; 

     [verticalSeparator stroke]; 
    } 

    [NSGraphicsContext restoreGraphicsState]; 
} 

Вопрос заключается в том, что, когда я приношу этот класс в моем проекте, это еще один из моих (несвязанных) просмотров disappear-- как, выиграл «т сделать правильно

enter image description here

Если я закомментируйте -saveGraphicsState и -restoreGraphicsState он работает и привлекает мое другое мнение правильно

enter image description here

Что может быть неправильно здесь?

EDIT: Kicker является то, что товарищи по команде на 10.11 и 10.12 не видят эту проблему

ответ

1

Я думаю, что вы должны назвать

[NSGraphicsContext saveGraphicsState]; 

не

[[NSGraphicsContext currentContext] saveGraphicsState];