2016-09-27 64 views
0

我正在使用Apple教程「開始開發iOS應用程序(Swift) - 使用Xcode 8和Swift 3實現自定義控件。錯誤。蘋果認爲,我們使用下面的代碼。覆蓋func invalidateIntrinsicContentSize()不會覆蓋錯誤。刪除重寫與超類錯誤相沖突

override func intrinsicContentSize() -> CGSize { 
    let buttonSize = Int(frame.size.height) 
    let width = (buttonSize * starCount) + (spacing * (starCount - 1)) 

    return CGSize(width: width, height: buttonSize) 
} 

但是,第一個錯誤(這是有點無關緊要這個問題)是,斯威夫特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

在迅速intrinsicContentSize已更改爲存儲屬性,而不是invalidateIntrinsicContentSize(),所以你應該儘量覆蓋var intrinsicContentSize

1

在Swift3中,它已被更改爲一個屬性,並且它不作爲一種方法提供給您。你應該重寫吸氣回到你想要的大小:

override public var intrinsicContentSize: CGSize { 
    return CGSize()//your desired size here 
} 

請參閱文件IntrinsicContentSize