Пользовательские NSScrollers со странным эффектом от Core Animation - PullRequest
1 голос
/ 18 июля 2010

Я делаю пользовательские NSScrollers для использования в NSScrollView.Но когда любой из суперпредставлений NSScroller получает Core Animation включенным.Я получаю эту проблему с рисунком, это очень неприятно.Всякий раз, когда я прокручиваю в углах прокрутки, просматриваю клип скроллеров.Но если скроллер начинает рисовать в углу, часть скроллера остается в этом углу.Что может быть причиной этой проблемы?У меня слишком много кода, чтобы показать здесь.Но вот мой код для рисования:

NSRect knobRect = [self rectForPart:NSScrollerKnob];

NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:knobRect 
                                                     xRadius:CornerRadius 
                                                     yRadius:CornerRadius];

[path setLineWidth:2];
[[NSColor colorWithDeviceRed:0.114 green:0.114 blue:0.114 alpha:0.3] set];
[path fill];
[[NSColor colorWithDeviceWhite:1.0 
                         alpha:0.100] set];

    // Clip drawing to this path; draw nothing outwith the path. 
[path addClip];
[path stroke];

Я уже пытался избавиться от всего, кроме заливки, но это не сработало.Эта проблема исчезнет, ​​если я вызову setNeedsDisplay: YES в супер-представлении при вызове setFloatValue.

Отсечение http://idkz.org/b814ee5c875c9f44cc2d1345e4489420

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Вы, вероятно, узнали об этом, но в вашем случае следующий фрагмент должен решить вашу проблему с рисунком:

-(BOOL)isOpaque {
   return NO;
}
1 голос
/ 18 июля 2010

Похоже, что ответом на проблему является:
[self setArrowsPosition:NSScrollerArrowsNone]; И это волшебно работает: D

Изменить, но я получаю аналогичный эффект при перетаскивании полосы прокрутки. : '(Есть ли способ очистить графику без перерисовки самого прокрутки?: (

...