gpt4 book ai didi

ios - CAShapeLayer 的改造

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:08:48 26 4
gpt4 key购买 nike

我正在使用 CAShapeLayer 绘制一个四分之一圆。单击时我想将它转换 90 度。但是当我这样做时,图层正在转换并离开屏幕。我需要围绕中心点旋转。让我们假设中心点是 (100,100)。这是我的代码:

CGMutablePathRef path = CGPathCreateMutable();
//CGPathMoveToPoint(path, NULL, self.bounds.size.width/2, self.bounds.size.height/2);
CGPathAddArc(path, NULL, self.bounds.size.width/2, self.bounds.size.height/2, 100, (0), (M_PI_2), NO);
CGPathAddArc(path, NULL, self.bounds.size.width/2, self.bounds.size.height/2, 100-50, (M_PI_2), (0), YES);
CGPathCloseSubpath(path);

CAShapeLayer* arcLayer = [[CAShapeLayer alloc]init];
arcLayer.path = path;
arcLayer.fillColor = [UIColor yellowColor].CGColor;

[self.layer addSublayer:arcLayer];

动画代码:

  CABasicAnimation *spin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];

spin.removedOnCompletion = NO;

spin.fillMode = kCAFillModeForwards;

[spin setByValue:[NSNumber numberWithFloat:M_PI_2]];
//layer.affineTransform = CGAffineTransformMakeRotation(M_PI_2);
[spin setDuration:1.0];
[layer addAnimation:spin forKey:@"transform.rotation"];

请帮帮我。

最佳答案

您看到的问题是因为层没有尺寸。您仍然可以看到路径,因为它没有被裁剪到图层的边界。旋转相对于层的中心应用,但没有在其自己的坐标系(与路径使用的坐标系相同的坐标系)中为 (0,0) 的大小。

您可以通过设置强烈的背景颜色(不是填充颜色)并为图层提供任意框架来理解我的意思。您想要的最终框架很可能是路径的边界框。

此时您应该看到 View 围绕预期点旋转。现在您可以再次删除背景颜色。

关于ios - CAShapeLayer 的改造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com