I updated to Xcode 8 beta 5, and now get the following error on a class that inherits from UIView:
Method does not override any method from its superclass override public func intrinsicContentSize() -> CGSize { ... } Is there a workaround?
Please check the latest reference. (You can easily find it just putting the word "intrinsicContentSize" in the searchbar of Apple's developer site.)
Declaration
var intrinsicContentSize: CGSize { get }
intrinsicContentSize has become a computed property, so you need to override it in this way:
override open var intrinsicContentSize: CGSize { get { //... return someCGSize } } Or simply:
override open var intrinsicContentSize: CGSize { //... return someCGSize } UIView class you will see how it has been changed.While transitioning from one version of Xcode to another, there is different ways to find out why your code does not compile anymore. Here are a few resources for intrinsicContentSize:
intrinsicContentSize from developer.apple.com.intrinsicContentSize straight from Apple Developer API Reference page for UIView.intrinsicContentSize with your browser's find menu (shortcut: cmd + F).intrinsicContentSize from Xcode's Documentation and API Reference (path: Help > Documentation and API Reference, shortcut: shift + cmd + 0).UIView initializer in your Xcode code (for example, UIView()), select Jump to Definition and then perform a search for intrinsicContentSize.These searches will show you that intrinsicContentSize, with Swift 3 and iOS 10, is no more a method but a computed property of UIView that has the following declaration:
var intrinsicContentSize: CGSize { get }
As a consequence, you will have to replace your intrinsicContentSize() method implementation with the following code snippet:
override public var intrinsicContentSize: CGSize { return ... }