objektif-c - Bagaimana untuk menyalin dan memutar imej yang dilukis dalam drawInContext.
習慣沉默
習慣沉默 2017-05-02 09:33:50
0
0
477

Saya melukis anak panah ke atas yang bergerak dengan kemajuan Bahagian lain adalah simetri.

-(void)drawInContext:(CGContextRef)ctx
{
    [super drawInContext:ctx];
    UIGraphicsPushContext(ctx);
    CGContextRef context=UIGraphicsGetCurrentContext();
    
    //draw
    
    //path1
    UIBezierPath *curvePath1=[UIBezierPath bezierPath];
    curvePath1.lineWidth=2.0f;
    //arrow path
    UIBezierPath *arrowPath=[UIBezierPath bezierPath];
    if (self.progress<=0.5) {
        CGPoint pointA=CGPointMake(self.frame.size.width/2-Radius, (2*LineLength-2*CenterY)*self.progress+2*CenterY);
        CGPoint pointB=CGPointMake(self.frame.size.width/2-Radius, (2*LineLength-2*CenterY)*self.progress+CenterY);
        //path
        [curvePath1 moveToPoint:pointA];
        [curvePath1 addLineToPoint:pointB];
        
        //arrow
        [arrowPath moveToPoint:pointB];
        [arrowPath addLineToPoint:CGPointMake(pointB.x-3*sinf(Degree), pointB.y+3*cosf(Degree))];
        [curvePath1 appendPath:arrowPath];
    }else if (self.progress>0.5){
        CGPoint pointA=CGPointMake(self.frame.size.width/2-Radius, 2*LineLength*self.progress+CenterY-2*LineLength);
        CGPoint pointB=CGPointMake(self.frame.size.width/2-Radius, CenterY);
        
        [curvePath1 moveToPoint:pointA];
        [curvePath1 addLineToPoint:pointB];
        [curvePath1 addArcWithCenter:CGPointMake(self.frame.size.width/2, CenterY) radius:Radius startAngle:M_PI endAngle:(2*M_PI*(1-self.progress)) clockwise:NO];
        
        [arrowPath moveToPoint:curvePath1.currentPoint];
        [arrowPath addLineToPoint:CGPointMake(curvePath1.currentPoint.x-3*(sinf(Degree+(2*M_PI*self.progress-M_PI))), curvePath1.currentPoint.y+3*cosf(sinf(Degree+(2*M_PI*self.progress-M_PI))))];
    }
    CGContextSaveGState(context);
    CGContextRestoreGState(context);
    
    [[UIColor blackColor] setStroke];
    [arrowPath  stroke];
    [curvePath1 stroke];
    
    UIGraphicsPopContext();
}
習慣沉默
習慣沉默

membalas semua(0)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan