我正在使用Apple Tutorial“开始开发iOS应用程序(Swift)” - 使用Xcode 8和Swift 3实现自定义控件。我正在“为按钮大小声明一个常量”部分但是出错.Apple建议我们使用以下代码。
override func intrinsicContentSize() -> CGSize {
let buttonSize = Int(frame.size.height)
let width = (buttonSize * starCount) + (spacing * (starCount - 1))
return CGSize(width: width, height: buttonSize)
}
但是,第一个错误(与此问题无关)是在Swift 3中,intrinsicContentSize()已更改为invalidateIntrinsicContentSize()。使用override func invalidateIntrinsicContentSize()后,我收到以下错误。
swift:53:19: Method does not override any method from its superclass
当我删除覆盖时,我收到以下错误。
53:10: Method 'invalidateIntrinsicContentSize()' with Objective-C selector
'invalidateIntrinsicContentSize' conflicts with method
'invalidateIntrinsicContentSize()' from superclass 'UIView' with the
same Objective-C selector
任何人都可以解释可能出现的问题吗?我可以更改或添加什么来摆脱这个错误?
由于
答案 0 :(得分:1)
在Swift3中,它已被更改为属性,并且它不可用作方法。您应该覆盖getter以返回所需的大小:
override public var intrinsicContentSize: CGSize {
return CGSize()//your desired size here
}
请参阅文件IntrinsicContentSize
答案 1 :(得分:0)
在swift中,intrinsicContentSize已更改为存储属性,而不是invalidateIntrinsicContentSize(),因此您应该尝试覆盖var intrinsicContentSize
。