tôi thích phân lớp NSProgressIndicator. Tôi đã sử dụng đoạn mã này và tôi đặt Subclass trong Interface Builder:Phân lớp 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);
Khi ứng dụng bắt đầu trông nó như thế này:
Nhưng trong bản sao tiến bộ thanh cũ xuất hiện.
Có vấn đề gì?
Bạn quên để thêm [siêu drawRect: rect] –
Nó không làm việc với [siêu drawRect: rect]. – Konobi
Vì vậy, tôi thêm NSLog vào phân lớp của tôi và các lớp con chỉ gọi một lần khi bắt đầu nhưng trong quá trình sao chép lớp không bao giờ được gọi. – Konobi