ios - 为什么我的转换是串联的,而不是被替换的?

标签 ios swift

好吧,这很奇怪......

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/

相关文章:

html - UIWebView 底部出现黑线。如何去除?

swift - 数组默认按值传递&线程安全

ios - 如何快速修复 URLQueryItem

ios - 禁用一半的 UIStepper

ios - SKScene的更新功能似乎不起作用

ios - Cordova ios 应用程序无法加载设备数据

ios - Obj-C 检查图像是否已存在于照片库中

iphone 当前位置不显示

ios - 异步 swift 函数是否应该保留对该对象的强引用?

swift - NSPredicate 获取第一个数字