Circular Progress Bar using Objective C
This video shows how to create circular progress bar using objective-c and cocoa framework. To code this project, I used xcode 7.1.1 and mac os x 10.10.5
Classes used: nsbezierpath, NSAffineTransform
Java Version: Circular Progressbar using Java https://youtu.be/zA82Mp5BXC4
Enjoy!!!
don’t forget to subscribe on YouTube as more code coming.
ProgressBarView.h
#import <Cocoa/Cocoa.h> @interface ProgressBarView : NSView{ NSDictionary *attributes; @public int progress; } @end
ProgressBarView.m
#import "ProgressBarView.h" @implementation ProgressBarView -(void)viewDidMoveToWindow{ self->progress=0; attributes=[NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Helvetica" size:26],NSFontAttributeName,[NSColor redColor],NSForegroundColorAttributeName, nil]; } - (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; NSAffineTransform *tran=[NSAffineTransform transform]; [tran translateXBy:dirtyRect.size.width/2 yBy:dirtyRect.size.height/2]; [tran rotateByDegrees:270]; [tran concat]; NSBezierPath *path=[NSBezierPath bezierPath]; [path setLineWidth:2]; [path moveToPoint:NSMakePoint(0, 0)]; [path appendBezierPathWithArcWithCenter:NSMakePoint(0, 0) radius:100 startAngle:0 endAngle:self->progress*3.6];//360/100=3.6 [path closePath]; [[NSColor redColor] setFill]; [path fill]; path=[NSBezierPath bezierPath]; [path setLineWidth:2]; [path moveToPoint:NSMakePoint(0, 0)]; [path appendBezierPathWithArcWithCenter:NSMakePoint(0, 0) radius:90 startAngle:0 endAngle:360]; [path closePath]; [[NSColor whiteColor] setFill]; [path fill]; tran=[NSAffineTransform transform]; [tran rotateByDegrees:90]; [tran concat]; NSAttributedString *cur_text=[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d%%",progress] attributes:attributes]; NSSize text_size=[cur_text size]; NSRect r=NSMakeRect(0+(0-text_size.width)/2, 0+(0-text_size.height)/2, text_size.width, text_size.height); [cur_text drawInRect:r]; } -(BOOL)isFlipped{ return true; } @end