在 Swift 2.3 中,我们可以这样写:
var rect = CGRect(...)
rect.offsetInPlace(dx: 15, dy: 0)
将一个矩形向右移动 15pt。
但是在 Swift 3 中,这个函数似乎不再存在了。
在检查 CGRect
接口(interface)时,我们只能看到非变异变体 offsetBy(dx:, dy:)
。在我们通常使用变异函数的所有地方(名为 ...inPlace
)也是如此。我已经在 GitHub 上搜索了 Swift evolution 存储库,但找不到任何关于此的注释。
变异变体是否已被移除?剩余的函数是否根据返回值是否被使用而自动改变?恕我直言,如果它们真的被删除了,那将是一种耻辱,因为它们曾经在进行基于代码的布局等时非常方便。
最佳答案
您可以制作一个以实现兼容性。
extension CGRect {
mutating func offsetInPlace(dx: CGFloat, dy: CGFloat) {
self = self.offsetBy(dx: dx, dy: dy)
}
}
关于Swift 3 变异函数缺少 ('...inPlace' 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438362/