太極LOGO

@implementation Taiji
{
    CGFloat _cx;
    CGFloat _cy;
    CGFloat _r;
    CGFloat _degree;
}

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor clearColor];
        _degree = 30;
        _cx = frame.size.width/2;
        _cy = frame.size.height/2;
        _r = _cx - 3;
        [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];

    }
    return self;
}

-(void)timerAction
{
    _degree++;
    [self setNeedsDisplay];
}


- (void)drawRect:(CGRect)rect {

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(ctx, 2);

    CGContextAddEllipseInRect(ctx, CGRectMake(_cx - _r, _cy - _r, _r * 2, _r * 2));

    //畫一條直徑
    CGContextMoveToPoint(ctx, 
                         _cx + _r * cos(toArc(_degree)), 
                         _cy - _r * sin(toArc(_degree)));

//    CGContextAddLineToPoint(ctx,
//                            _cx - _r * cos(toArc(_degree)), 
//                            _cy + _r * sin(toArc(_degree)));
    CGContextStrokePath(ctx);

    CGContextMoveToPoint(ctx,
                         _cx + _r * cos(toArc(_degree)), 
                         _cy - _r * sin(toArc(_degree)));

    CGContextAddArc(ctx, 
                    _cx + _r * cos(toArc(_degree))/2, 
                    _cy - _r * sin(toArc(_degree))/2, 
                    _r/2, 
                    toArc(-_degree), 
                    toArc(-_degree + 180), 
                    1);

    CGContextAddArc(ctx, 
                    _cx - _r * cos(toArc(_degree))/2, 
                    _cy + _r * sin(toArc(_degree))/2, 
                    _r/2, 
                    toArc(-_degree), 
                    toArc(-_degree + 180), 
                    0);

    CGContextAddArc(ctx, _cx, _cy, _r, toArc(-_degree + 180), toArc(-_degree), 0);

    CGContextAddEllipseInRect(ctx, CGRectMake(_cx + _r * cos(toArc(_degree))/2 - _r/6, _cy - _r * sin(toArc(_degree))/2- _r/6, _r / 3, _r / 3));

//    CGContextStrokePath(ctx);
    CGContextFillPath(ctx);

    CGContextAddEllipseInRect(ctx, CGRectMake(_cx - _r * cos(toArc(_degree))/2 - _r/6, _cy + _r * sin(toArc(_degree))/2- _r/6, _r / 3, _r / 3));
    CGContextSetRGBFillColor(ctx, 1, 1, 1, 1);
    CGContextFillPath(ctx);

}
CGFloat toArc(CGFloat degree)
{
    return M_PI/180 * degree;
}

相關文章
相關標籤/搜索