Mi piace creare una sottoclasse di NSProgressIndicator. Ho usato questo codice e ho impostato la sottoclasse in Interface Builder:Sottoclasse NSProgressIndicator
- (void)drawRect:(NSRect)dirtyRect {
NSRect rect = NSInsetRect([self bounds], 1.0, 1.0);
CGFloat radius = rect.size.height/2;
NSBezierPath *bz = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:radius yRadius:radius];
[bz setLineWidth:2.0];
[[NSColor blackColor] set];
[bz stroke];
rect = NSInsetRect(rect, 2.0, 2.0);
radius = rect.size.height/2;
bz = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:radius yRadius:radius];
[bz setLineWidth:1.0];
[bz addClip];
rect.size.width = floor(rect.size.width * ([self doubleValue]/[self maxValue]));
NSRectFill(rect);
Quando l'applicazione inizia il suo aspetto come questo:
Ma durante la copia di avanzamento del vecchio bar si presenta.
Cosa c'è di sbagliato?
si è dimenticato di aggiungere [super drawRect: rect] –
E 'non funziona con [super drawRect: rect]. – Konobi
Quindi aggiungo NSLog alla mia sottoclasse e le chiamate alla sottoclasse solo una volta all'avvio, ma durante l'avanzamento della copia la classe non viene mai chiamata. – Konobi