-2

我想将 NSString 旋转一个角度。

但我不希望整个琴弦旋转,而是希望琴弦头留在原来的位置。

我怎样才能让 NSString 围绕某个点旋转,但不是整个矩阵旋转...

好的,对不起,实际上我的问题是我想围绕某个点旋转,但是 CGContextRotateCTM 是基于原点的。所以我怎样才能将原点移动到某个点,当旋转后,我怎样才能移动原点点回来……

4

1 回答 1

0

大概你想围绕一个锚点旋转一个 UILabel 。如果是这样,请按照此处从 David Rönnqvist 中提取的方法执行以下操作

#define DEGREES_TO_RADIANS(angle) (angle/180.0*M_PI)


- (void)rotateText:(UILabel *)label 
       aroundPoint:(CGPoint)rotationPoint 
          duration:(NSTimeInterval)duration 
           degrees:(CGFloat)degrees {

    /* Setup the animation */
   [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
    CGPoint transportPoint = CGPointMake((rotationPoint.x - CGRectGetMinX(label.frame))/CGRectGetWidth(label.bounds),
                                         (rotationPoint.y - CGRectGetMinY(label.frame))/CGRectGetHeight(label.bounds));

    [label.layer setAnchorPoint:transportPoint];
    [label.layer setPosition:rotationPoint]; // change the position here to keep the frame 
    [label.layer setTransform:CATransform3DMakeRotation(DEGREES_TO_RADIANS(degrees), 0, 0, 1)];   
    } completion:nil];
} 

如果您希望它围绕一端旋转,请使用在该处设置锚点(方法中的aroundPoint)CGPointMake(.. , ..)

于 2012-11-27T14:06:34.430 回答