gpt4 book ai didi

ios - 为什么在缩放时 CAShapeLayer 不以我的 UIView 为中心?

转载 作者:行者123 更新时间:2023-11-28 12:34:52 26 4
gpt4 key购买 nike

 let centerPointX = colorSizeGuide.bounds.midX / 2
let centerPointY = colorSizeGuide.bounds.midY / 2
let circleWidth: CGFloat = 10
let circleHeight: CGFloat = 10

shape.path = UIBezierPath(ovalIn: CGRect(x: centerPointX + circleWidth / 4, y: centerPointY + circleHeight / 4, width: circleWidth, height: circleHeight)).cgPath
shape.strokeColor = UIColor(r: 160, g: 150, b: 180).cgColor
shape.fillColor = UIColor(r: 160, g: 150, b: 180).cgColor
shape.anchorPoint = CGPoint(x: 0.5, y: 0.5)
shape.lineWidth = 0.1
shape.transform = CATransform3DMakeScale(4.0, 4.0, 1.0)
colorSizeGuide.layer.addSublayer(shape)

这是正在发生的事情。我需要 CAShapeLayer 留在小灰色区域的中间:

enter image description here

最佳答案

我自己在仿射变换方面有些挣扎,但这是我认为正在发生的事情:

缩放以 0,0 为中心,因此它将从该点开始扩展。这意味着它将“推离”原点。

为了从中心开始增长,您应该将原点移动到形状的中心点,缩放,然后将原点移回现在缩放的数量:

var transform = CATransform3DMakeTranslation(centerPointX, centerPointY, 0)
transform = CATransformScale(transform, 4.0, 4.0, 1.0)
var transform = CATransform3DTranslate(
transform,
-4.0 * centerPointX,
-4.0 * centerPointY,
0)
shape.transform = transform

顺便说一句,我无法理解您随问题发布的图片。你说“我需要 CAShapeLayer 留在小灰色区域的中间”我收集你的形状层是圆圈之一,但不清楚你所说的“小灰色区域”是什么意思。看起来可能有一个轮廓以某种方式被裁剪了。

关于ios - 为什么在缩放时 CAShapeLayer 不以我的 UIView 为中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173040/

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