Базовая анимация iOS: неправильная точка привязки для вращения

Я хотел бы реализовать базовую анимацию вращения в iOS, при которой представление непрерывно вращается вокруг своей центральной точки.

Однако по какой-то причине точка привязки вращения всегда является исходной точкой родительского вида, а не центром вращающегося вида.
Таким образом, представление вращается вокруг левого верхнего угла экрана, даже если я вручную установил точку привязки.

Вот что я делаю:

// Add shape layer to view
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
CGRect shapeRect = CGRectMake(0, 0, 100, 100);
UIBezierPath *roundedRect = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:5];
shapeLayer.path = roundedRect.CGPath;
shapeLayer.anchorPoint = CGPointMake(0.5, 0.5);
shapeLayer.fillColor = [[UIColor redColor] CGColor];

[self.view.layer addSublayer:shapeLayer];

// Set rotation animation
CATransform3D rotationTransform = CATransform3DMakeRotation(M_PI, 0, 0, 1);
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 1.0f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = HUGE_VALF;

[shapeLayer addAnimation:rotationAnimation forKey:@"transform"];

Любая помощь будет признательна.

5
задан antalkerekes 15 November 2011 в 21:59
поделиться