-2

NSString を角度で回転させたい。

しかし、弦全体を回転させたくありません。代わりに、弦の頭を元の場所に留めておきたいのです。

どうすれば NSString を特定のポイントを中心に回転させることができますが、マトリックス全体を回転させることはできません...

OK、申し訳ありませんが、実際には私の問題は特定の点を中心に回転したいのですが、CGContextRotateCTMは原点に基づいています.だから、回転後に原点を特定の点に移動するにはどうすればよいですか?後ろを向く……

4

1 に答える 1

0

おそらく、アンカーポイントを中心にUILabelを回転させたいと考えています。もしそうなら、ここでDavidRö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 に答える