2016-09-27 4 views
0

Appleチュートリアルの「iOSアプリケーションの開発を開始する(Swift) - Xcode 8とSwift 3でカスタムコントロールを実装する」を使用していますが、「ボタンサイズに定数を宣言しています。エラー。アップルは、我々は次のコードを使用することを示唆している。override 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 

誰かが間違っているかもしれないことを説明できますか?このエラーを取り除くために何を変更または追加することができますか?あなたがvar intrinsicContentSizeを上書きしようとする必要がありますので

おかげで迅速なintrinsicContentSizeで

答えて

0

は、保存されたプロパティではなく、invalidateIntrinsicContentSize()に変更されました。

1

Swift3では、プロパティに変更されており、メソッドとして利用できません。あなたの希望のサイズを返すためにゲッターをオーバーライドする必要があります:

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

のドキュメントを参照してくださいをIntrinsicContentSize

関連する問題