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

Gol*_*Joe 23 xcode uiview swift

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

Method does not override any method from its superclass

override public func intrinsicContentSize() -> CGSize
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

有解决方法吗?

OOP*_*Per 55

请查看最新参考.(您可以轻松地在Apple开发者网站的搜索栏中找到"intrinsicContentSize"一词.)

宣言

var intrinsicContentSize: CGSize { get }
Run Code Online (Sandbox Code Playgroud)

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

override open var intrinsicContentSize: CGSize {
    get {
        //...
        return someCGSize
    }
}
Run Code Online (Sandbox Code Playgroud)

或者干脆:

override open var intrinsicContentSize: CGSize {
    //...
    return someCGSize
}
Run Code Online (Sandbox Code Playgroud)


Ima*_*tit 7

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

  1. 您可以intrinsicContentSizedeveloper.apple.com搜索.
  2. 您可以intrinsicContentSize直接从Apple Developer API参考页面搜索UIView.
  3. 您可以打开iOS 10.0 API Diffs for UIKit页面intrinsicContentSize使用浏览器的查找菜单搜索实例(快捷键:cmd+ F).
  4. 您可以intrinsicContentSize从Xcode的文档和API参考中搜索(路径:Help> Documentation and API Reference,快捷方式:shift+ cmd+ 0).
  5. 您也可以右键单击UIViewXcode代码中的任何初始化程序(例如UIView()),选择Jump to Definition然后执行搜索intrinsicContentSize.

这些搜索将告诉您intrinsicContentSize,使用Swift 3和iOS 10,不再是一个方法,但其计算属性UIView具有以下声明:

var intrinsicContentSize: CGSize { get }


因此,您必须intrinsicContentSize()使用以下代码段替换方法实现:

override public var intrinsicContentSize: CGSize {
    return ...
}
Run Code Online (Sandbox Code Playgroud)