>假设您正在尝试缩放图层,然后读回该比例(例如:在更改比例的动画期间(。
let desiredScale = 0.5
layer.transform = CATransform3DMakeScale(desiredScale, desiredScale, 1)
let readScale = layer.value(forKeyPath: "transform.scale") as? Double
print("scale: (readScale)") // "scale: 0.6666666"
使用value(forKeyPath:)
读出的比例值将很接近,但不太正确!
这可能是因为读出的值与整个 3D 比例有关(以 x、y 和 z 为单位(。专门读出 x 或 y 刻度将返回正确的值:
let desiredScale = 0.5
layer.transform = CATransform3DMakeScale(desiredScale, desiredScale, 1)
let wholeScale = layer.value(forKeyPath: "transform.scale") as? Double
let xScale = layer.value(forKeyPath: "transform.scale.x") as? Double
print("scale: (wholeScale)") // "scale: 0.6666666"
print("scale: (xScale)") // "scale: 0.5"