Вы можете просто создать подкласс NSTextField
и переопределить метод -drawRect:
, чтобы "заполнить" соответствующий процент от всей ширины некоторым цветом или градиентом (или любым другим) для прогресса. Если я правильно понимаю ваш вопрос.
-(void)drawRect:(NSRect)dirtyRect {
CGFloat progress = 0.33;
NSRect progressRect = [self bounds];
progressRect.size.width *= progress;
[[NSColor colorWithCalibratedRed:0.0 green:0.0 blue:1.0 alpha:0.4] set];
NSRectFillUsingOperation(progressRect, NSCompositeSourceOver);
[super drawRect:dirtyRect];
}
Очевидно, что "progress" будет исходить из свойства, которое вы объявляете, и обновляться в соответствии с моделью. Вам нужно убедиться, что setDrawsBackground:
выключен, или фон установлен на [NSColor clearColor];
, чтобы ваш пользовательский рисунок был виден.
Это кадр из кода выше.