好吧,这很奇怪......
func closePageCell(cell : BookPageCell) {
var transform = CATransform3DIdentity
if cell.layer.anchorPoint.x == 0 {
transform = CATransform3DRotate(transform, CGFloat(0), 0, 1, 0)
transform = CATransform3DTranslate(transform, -0.7 * cell.layer.bounds.width / 2, 0, 0)
transform = CATransform3DScale(transform, 0.7, 0.7, 1)
}
else {
transform = CATransform3DRotate(transform, CGFloat(-M_PI), 0, 1, 0)
transform = CATransform3DTranslate(transform, 0.7 * cell.layer.bounds.width / 2, 0, 0)
transform = CATransform3DScale(transform, 0.7, 0.7, 1)
}
cell.layer.transform = transform
}
转换在这里连接,但语法是“=”
“=”肯定会替换转换。为什么这是有效的?!
最佳答案
CATransform3Dxxx 接受一个转换作为参数,您将自己输入其中,并将其返回。所以每次调用该方法时,它都会构建转换,有效地将它们连接在一起。
如果您将参数中的 transform
替换为 CATransform3DIdentity
,您预期的行为将会发生
关于ios - 为什么我的转换是串联的,而不是被替换的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046575/