2011-04-10 63 views
0

有沒有一種方法可以在不使用視圖動畫旋轉中心點的情況下移動視圖?iPhone動畫 - 在一個圓圈中移動視圖

 
    A 

A C A 

    A 
+0

「聰明的褲子」的方式: 在一個層次上旋轉它自己左下角的視圖。 (或者如果你更喜歡沿着那條線進一步離開的話)。 但是,**在同一時間,使用另一個級別圍繞它的中心**在另一個方向旋轉相同的度數。 如果您願意,這是一種**「摩天輪」**方法。 – Fattie 2016-05-12 17:51:02

回答

0

它沒有那麼大的一筆交易,把一個動畫線程和手動移動它的每一幀,所以這就是我去的。

3
#import <QuartzCore/QuartzCore.h> 
    #define degreesToRadians(deg) (deg/180.0 * M_PI) 

manualy:

-(CGPoint)setPointToAngle:(int)angle center:(CGPoint)centerPoint radius:(double)radius 
{ 
    return CGPointMake(radius*cos(degreesToRadians(angle)) + centerPoint.x, radius*sin(degreesToRadians(angle)) + centerPoint.y); 
} 

動畫是這樣的:

int angle = 0; // start angle position 0-360 deg 
    CGPoint center = self.view.center; 
    CGPoint start = [self setPointToAngle:angle center:center radius:radius]; //point for start moving 
    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path, NULL, start.x, start.y); 

    for(int a =0;a<4;a++) //set path points for 90, 180, 270,360 deg form begining angle 
    { 
     angle+=45; 
     expPoint = [self setPointToAngle:angle center:center radius:expRadius]; 
     angle+=45; 
     start = [self setPointToAngle:angle center:center radius:radius]; 
     CGPathAddQuadCurveToPoint(path, NULL,expPoint.x, expPoint.y, start.x, start.y); 
    } 

    CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
    pathAnimation.removedOnCompletion = NO; 
    pathAnimation.path = path; 
    [pathAnimation setCalculationMode:kCAAnimationCubic]; 
    [pathAnimation setFillMode:kCAFillModeForwards]; 
    pathAnimation.duration = 14.0; 

    [MY_VIEW.layer addAnimation:pathAnimation forKey:nil]; 

還看

CGPathAddQuadCurveToPoint, 
CGPathAddCurveToPoint, 
CGPathAddArcToPoint, 
CGPathAddArc 

和其他