【问题标题】:Setter is not working in SwiftSetter 在 Swift 中不起作用
【发布时间】:2014-07-18 09:07:04
【问题描述】:

我正在尝试使用设置大小和原点的快捷方式扩展UIView,就像在Obj-Chere 中所做的那样。 吸气剂工作得很好,但二传手却不行。任何想法为什么?我做错了什么?

这是我从 Obj-C 重写为 Swift 的代码:

extension UIView {

...


var height : CGFloat {
get {
    return self.frame.size.height
}
set {
    var r = self.frame;
    r.size.height = height;
    self.frame = r;
}
}

这是另一个,因为CGRect 属性是“val”

var width : CGFloat {
set {
    self.frame.size.width = width
}
get {
    return self.frame.size.width
}
}

但是这些设置器都不起作用

这很好用,但是太长了:)

self.frame.size.width = 100

感谢您的帮助!

【问题讨论】:

  • 在设置器中,您需要在第二行使用newValue 而不是height。这个概念在你的其他二传手中是一样的。

标签: ios uiview swift


【解决方案1】:

setter 名称和括号是可选的。如果您提供 一个 setter 名称,它用作 setter 的参数名称。 如果您不提供 setter 名称,则默认参数名称为 setter 是 newValue

将您的 set 方法更改为:

set {
    self.frame.size.width = newValue
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2014-07-27
    • 2014-07-29
    相关资源
    最近更新 更多