小编Cay*_*den的帖子

将 NSImageView 的 CALayer 旋转 90 度

我正在尝试旋转 NSImageView 的 CALayer。我的问题是,anchorPoint 默认情况下似乎是 (0.0, 0.0) 但我希望它是图像的中心(Apple 的文档表明默认值应该是中心 (0.5, 0.5),但它不在我的系统操作系统上) X 10.7),当我修改锚点时,图像中心的原点移动到左下角。

这是我用来旋转图层的代码:

CALayer *myLayer = [imageView layer];
CGFloat myRotationAngle = -M_PI_2;

NSNumber *rotationAtStart = [myLayer valueForKeyPath:@"transform.rotation"];
CATransform3D myRotationTransform = CATransform3DRotate(myLayer.transform, myRotationAngle, 0.0, 0.0, 1.0);
myLayer.transform = myRotationTransform;        
CABasicAnimation *myAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
myAnimation.duration = 1.0;
myAnimation.fromValue = rotationAtStart;
myAnimation.toValue = [NSNumber numberWithFloat:([rotationAtStart floatValue] + myRotationAngle)];
[myLayer addAnimation:myAnimation forKey:@"transform.rotation"];

myLayer.anchorPoint = CGPointMake(0.5, 0.5);
[myLayer addAnimation:myAnimation forKey:@"transform.rotation"];  
Run Code Online (Sandbox Code Playgroud)

macos cocoa core-animation

5
推荐指数
1
解决办法
1812
查看次数

标签 统计

cocoa ×1

core-animation ×1

macos ×1