Вращение 90 градусов CALayer?

Как я поворачиваю 90 градусов CALayer? Я должен вращаться, все включает подуровней и систему координат.

28
задан Kristina Brooks 29 July 2010 в 11:56
поделиться

3 ответа

Если я анимирую это, я использую что-то вроде этого в своих приложениях:

- (NSObject *) defineZRotation {
    // Define rotation on z axis
    float degreesVariance = 90;
    // object will always take shortest path, so that
    // a rotation of less than 180 deg will move clockwise, and more than will move counterclockwise
    float radiansToRotate = DegreesToRadians( degreesVariance );
    CATransform3D zRotation;
    zRotation = CATransform3DMakeRotation(radiansToRotate, 0, 0, 1.0);  
    // create an animation to hold "zRotation" transform
    CABasicAnimation *animateZRotation;
    animateZRotation = [CABasicAnimation animationWithKeyPath:@"transform"];
    // Assign "zRotation" to animation
    animateZRotation.toValue = [NSValue valueWithCATransform3D:zRotation];
    // Duration, repeat count, etc
    animateZRotation.duration = 1.5;//change this depending on your animation needs
    // Here set cumulative, repeatCount, kCAFillMode, and others found in
    // the CABasicAnimation Class Reference.
    return animateZRotation;
}

Конечно, вы можете использовать его где угодно, не нужно возвращать его из метода, если это не соответствует вашим потребностям.

13
ответ дан 28 November 2019 в 02:40
поделиться

Obj-C:

theLayer.transform = CATransform3DMakeRotation(90.0 / 180.0 * M_PI, 0.0, 0.0, 1.0);

Swift:

theLayer.transform = CATransform3DMakeRotation(90.0 / 180.0 * .pi, 0.0, 0.0, 1.0)

То есть, трансформируйте слой так, чтобы он повернулся на 90 градусов (π / 2 радиана), причем 100% этого вращения происходит вокруг оси z.

50
ответ дан 28 November 2019 в 02:40
поделиться

В основном что-то вроде этого:

CGAffineTransform rotateTransform = CGAffineTransformMakeRotation(M_PI / 2.0) [myCALayer setAffineTransform:rotateTransform];

EDIT: Он будет вращаться по часовой стрелке или против часовой стрелки в зависимости от платформы (iOS или Mac OS).

8
ответ дан 28 November 2019 в 02:40
поделиться