我有许多按钮具有相同的size
,我想从懒惰变量设置常量宽度,我应该怎么做? JRTopView.buttonWidth
和buttonWidth
都无法正常工作。
class JRTopView: UIView {
let buttonWidth:CGFloat = 150
lazy var leftButton: UIButton! = {
let btn = UIButton(type: UIButtonType.Custom)
btn.backgroundColor = UIColor.greenColor()
btn.frame = CGRectMake(-30, 30, JRTopView.buttonWidth, buttonWidth)
return btn
}()
lazy var rightButton: UIButton! = {
let btn = UIButton(type: UIButtonType.Custom)
btn.backgroundColor = UIColor.greenColor()
btn.frame = CGRectMake(-30, 30, JRTopView.buttonWidth, buttonWidth)
return btn
}()
}
谢谢!
编辑:
有趣的是,如果我使用self.buttonWidth
,它可以在leftButton
中使用,但不能在rightButton
中使用。{{1}}。
答案 0 :(得分:2)
由于buttonWidth
是一个实例属性,因此访问它的唯一方法是通过JRTopView
的实例。
如果您在本课程之外,您可以创建新实例并执行yourInstance.buttonWidth
,如果您在课堂内,则可以buttonWidth/self.buttonWidth
。
但是,对于JRTopView
的所有实例来说,作为一个常量具有相同值的常量,将它提升到类级别会更有意义:
static let buttonWidth:CGFloat = 150
这应该允许你JRTopView.buttonWidth
。
答案 1 :(得分:1)
这是在Xcode 7.1中构建的
class JRTopView: UIView {
let buttonWidth:CGFloat = 150
lazy var leftButton: UIButton! = {
let btn = UIButton(type: UIButtonType.Custom)
btn.backgroundColor = UIColor.greenColor()
btn.frame = CGRectMake(-30, 30, self.buttonWidth, self.buttonWidth)
return btn
}()
lazy var rightButton: UIButton! = {
let btn = UIButton(type: UIButtonType.Custom)
btn.backgroundColor = UIColor.greenColor()
btn.frame = CGRectMake(-30, 30, self.buttonWidth, self.buttonWidth)
return btn
}()
}