我正在使用xcode 9 / swift 4.我有一个简单的UIViewController,其中WKWebView作为插座。
class WebViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var webView: WKWebView!
var spinner:UIActivityIndicatorView!
override func loadView()
{
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.navigationDelegate = self
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
spinner = UIActivityIndicatorView()
webView.addSubview(spinner)
spinner.center = self.webView.center
spinner.hidesWhenStopped = true
spinner.isHidden = true
}
首先,我尝试将故事板中的UIActivityViewIndicator作为插座拖出来,但每当我尝试做任何事情时,它总是保持错误。 spinner.hidesWhenStopped说打开时它是零。
然后我尝试以编程方式创建一个微调器,但不能显示它。我猜我错误地认为我可以在webView上添加微调器,例如。 webView.addSubview(旋转器)。
感谢。
答案 0 :(得分:3)
您有一个可以作为插座的webView,但您也在loadView
创建它。如果它是你在故事板中创建的东西的出口,那么你不应该这样做。
您创建的webView的框架为.zero。在viewDidLoad,它可能仍然是.zero(检查) - 在这种情况下,微调器是0,0。
你可以让旋转器成为出口。只知道它只能在viewDidLoad中使用,或者在loadView之后才能使用(在使用Storyboard时通常不会覆盖它)。如果您使用该代码,那么您已停止加载故事板。您可以拨打super.loadView()
,但我甚至不会覆盖。
这就是我要做的事情:
loadView
。(或者如果你真的设置在loadView上并将视图设置为webView)