intrinsicContentSize() - 方法不会覆盖其超类中的任何方法

时间:2016-08-10 18:39:10

标签: swift xcode uiview

我更新到Xcode 8 beta 5,现在从继承自UIView的类中得到以下错误:

Method does not override any method from its superclass

override public func intrinsicContentSize() -> CGSize
{
   ...
}

有解决方法吗?

2 个答案:

答案 0 :(得分:53)

请检查the latest reference。 (您可以轻松找到它只是在Apple's developer site的搜索栏中添加“intrinsicContentSize”一词。)

  

声明

var intrinsicContentSize: CGSize { get }

intrinsicContentSize已成为计算属性,因此您需要以这种方式覆盖它:

override open var intrinsicContentSize: CGSize {
    get {
        //...
        return someCGSize
    }
}

或者简单地说:

override open var intrinsicContentSize: CGSize {
    //...
    return someCGSize
}

答案 1 :(得分:7)

在从一个版本的Xcode转换到另一个版本时,有不同的方法可以找出代码不再编译的原因。以下是intrinsicContentSize的一些资源:

  1. 您可以从developer.apple.com搜索intrinsicContentSize
  2. 您可以直接从Apple Developer API Reference page for UIView搜索intrinsicContentSize
  3. 您可以打开iOS 10.0 API Diffs for UIKit page并使用浏览器的查找菜单搜索intrinsicContentSize的实例(快捷方式: cmd + ˚F)。
  4. 您可以从Xcode的文档和API参考中搜索intrinsicContentSize(路径:帮助&gt; 文档和API参考< / kbd>,快捷方式: shift + cmd + 0 )。
  5. 您还可以右键单击Xco​​de代码中的任何UIView初始值设定项(例如,UIView()),选择跳转到定义,然后搜索{ {1}}。
  6. 这些搜索将向您显示,使用Swift 3和iOS 10的intrinsicContentSize不再是一种方法,而是具有以下声明的intrinsicContentSize的计算属性:

      

    UIView

    因此,您必须使用以下代码段替换var intrinsicContentSize: CGSize { get }方法实现:

    intrinsicContentSize()