缺少Swift 3变异函数('... inPlace'方法)

时间:2016-09-11 16:43:34

标签: swift swift3

在Swift 2.3中,我们可以这样写:

var rect = CGRect(...)
rect.offsetInPlace(dx: 15, dy: 0)

将矩形15pt向右移动。

然而在Swift 3中,似乎这个功能不再存在。 在检查CGRect界面时,我们只能看到非变异变体offsetBy(dx:, dy:)。在我们通常使用变异函数(名为...inPlace)的所有地方也是如此。我已经在GitHub上搜索了Swift evolution repo,但是找不到任何关于这个的注释。

是否删除了变异变体?剩余的功能是否会根据是否使用返回值自动变异?恕我直言,如果它们实际上已被删除,那将是一种耻辱,因为它们在进行基于代码的布局时过去非常方便等。

2 个答案:

答案 0 :(得分:14)

您可以制作一个兼容性。

extension CGRect {
    mutating func offsetInPlace(dx: CGFloat, dy: CGFloat) {
        self = self.offsetBy(dx: dx, dy: dy)
    }
}

答案 1 :(得分:5)

似乎没有offsetInPlace了。请参阅此处的屏幕Instance Methods中的所有可用功能 enter image description here