0

こんにちは、一部が画面上にあり、一部が画面外にある UIImageView があります。

画面外のポイント (ビューの中心) を中心にビューを回転させたい。

どうすればいいですか?

fullRotationAnimation           = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    fullRotationAnimation.fromValue= [NSNumber numberWithFloat:0.0f];
    fullRotationAnimation.toValue   = [NSNumber numberWithFloat:2 * M_PI];
    fullRotationAnimation.duration  = 4;
    fullRotationAnimation.repeatCount = 1;
    [self->greyRings.layer addAnimation:fullRotationAnimation forKey:@"360"];

現時点ではそのコードを使用していますが、画面の中央で回転するだけです。

アイデアはありますか?

4

2 に答える 2

2

ブロック アニメーションの使用:

- (void)rotateImageView:(UIImageView *)imageView aroundPoint:(CGPoint)point byAngle:(CGFloat)angle {

    CGFloat sinA = sin(angle);
    CGFloat cosA = cos(angle);
    CGFloat x = point.x;
    CGFloat y = point.y;

    CGAffineTransform transform = CGAffineTransformMake(cosA,sinA,-sinA,cosA,x-x*cosA+y*sinA,y-x*sinA-y*cosA);

    [UIView animateWithDuration:4.0 animations:^{
        imageView.transform = transform;
    }];
}

角度の単位はラジアンであるため、1 回転は 2.0*M_PI であることに注意してください。

于 2012-08-28T15:29:41.143 に答える
1

CALayer の anchorPoint を設定する必要があるかもしれません。詳細については、レイヤーのジオメトリの指定を参照してください。

//(0,0) is the left-bottom of your layer bounds
self->greyRings.layer.anchorPoint = CGPointMake(0.0f, 0.0f);

負の anchorPoint も機能するはずです。そのため、境界を指定することをお勧めします。私たちが計算できます。

于 2012-08-28T15:45:57.157 に答える