IOS:用一个角度旋转NSString

时间:2012-11-27 13:20:30

标签: ios nsstring rotation angle

我想以一个角度旋转NSString。

但我不希望整个字符串旋转,而是希望字符串头留在原始位置。

如何让NSString围绕某个点旋转,但不是整个矩阵旋转......

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

1 个答案:

答案 0 :(得分:0)

据推测,您想要围绕锚点旋转UILabel。如果是这样的话,请按照DavidRönnqvisthere:

提升的方式完成
#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];
} 

如果您希望它围绕一端旋转,请使用CGPointMake(.. , ..)

设置锚点(方法中的aroundPoint)