gpt4 book ai didi

ios - 在 UIView 中居中对齐 CAShape 图层

转载 作者:行者123 更新时间:2023-12-02 02:33:10 25 4
gpt4 key购买 nike

下面是代码未对齐 UIView 中心的图像,白色。

CAShapeLayer *layer = [CAShapeLayer layer];
layer.anchorPoint=CGPointMake(0.5, 0.5);

layer.path=[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 75.0, 75.0)].CGPath;
layer.fillColor =[UIColor redColor].CGColor;

[self.shapeView.layer addSublayer:layer];

enter image description here

最佳答案

anchorPoint 不用于设置 CAShapeLayer 的位置,请使用 position 代替。

let layer = CAShapeLayer()
layer.borderColor = UIColor.blackColor().CGColor
layer.borderWidth = 100

layer.bounds = CGRectMake(0, 0, 50, 50)
layer.position = myView.center
layer.fillColor = UIColor.redColor().CGColor
view.layer.addSublayer(layer)

编辑

很抱歉之前的回答如此粗略,上面的代码可能无法按您想要的方式工作,这是我刚刚得出的正确答案。需要注意的重要一点是:绘制椭圆形路径的方式确实会影响 CAShapeLayer

let layer = CAShapeLayer()
myView.layer.addSublayer(layer)
layer.fillColor = UIColor.redColor().CGColor
layer.anchorPoint = CGPointMake(0.5, 0.5)
layer.position = CGPointMake(myView.layer.bounds.midX, myView.layer.bounds.midY)
layer.path = UIBezierPath(ovalInRect: CGRectMake(-75.0 / 2, -75.0 / 2, 75.0, 75.0)).CGPath

摘自苹果文档,

The oval path is created in a clockwise direction (relative to the default coordinate system)

换句话说,椭圆形路径是从边缘而不是中心绘制的,因此您必须考虑所绘制椭圆形的半径。对于您的情况,您需要执行以下操作:

layer.path = UIBezierPath(ovalInRect: CGRectMake(-75.0 / 2, -75.0 / 2, 75.0, 75.0)).CGPath 

现在我们确保绘制路径的中心等于CAShapeLayer的中心。然后我们可以使用 position 属性来根据需要移动 CAShapeLayer 。下图可以帮助您理解。

enter image description here enter image description here

关于ios - 在 UIView 中居中对齐 CAShape 图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37625368/

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