随着Xcode 9 Beta和iOS11预览版的最新更新,SFSafariViewController init
方法进行了一些更改。
@available(iOS 11.0, *)
public init(url URL: URL, configuration: SFSafariViewController.Configuration)
@available(iOS, introduced: 9.0, deprecated: 11.0)
public convenience init(url URL: URL, entersReaderIfAvailable: Bool)
从iOS11开始支持一种新的
init
方法,而iOS11将弃用当前可用的初始化方法。问题在于当前方法没有公开,因此无法覆盖。如果我们要使用Beta运行现有项目,则这将强制使用新的init
方法。有没有人找到在新的Xcode Beta中使用现有init
方法的方法?编辑:为澄清起见,这是我的子类中
init
方法的摘要class BPSafariViewController: SFSafariViewController {
override init(url URL: URL, entersReaderIfAvailable: Bool) {
super.init(url: URL, entersReaderIfAvailable: entersReaderIfAvailable)
if #available(iOS 10.0, *) {
preferredControlTintColor = UIColor.BPUIColor()
} else {
view.tintColor = UIColor.BPUIColor()
}
}
}
最佳答案
您可以在检查iOS
版本的同时执行以下操作。
var safariController: SFSafariViewController?
if #available(iOS 11.0, *) {
safariController = SFSafariViewController(url: URL(string: "your_url")!)
} else {
safariController = SFSafariViewController(url: URL(string: "")!, entersReaderIfAvailable: true)
}
关于ios - SFSafariViewController初始化方法强制使用iOS11支持的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450964/