我想将 NSString 旋转一个角度。
但我不希望整个琴弦旋转,而是希望琴弦头留在原来的位置。
我怎样才能让 NSString 围绕某个点旋转,但不是整个矩阵旋转...
好的,对不起,实际上我的问题是我想围绕某个点旋转,但是 CGContextRotateCTM 是基于原点的。所以我怎样才能将原点移动到某个点,当旋转后,我怎样才能移动原点点回来……
大概你想围绕一个锚点旋转一个 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(.. , ..)