UIActivityIndi catorView未在webview中显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIActivityIndi catorView未在webview中显示相关的知识,希望对你有一定的参考价值。
我有一个UINavigationController,我正在添加一个UIViewController。在我的UIViewController里面,我有一个webview,还试图设置一个UIActivityIndicatorView。但是我似乎无法让UIActivityIndicatorView显示出来。任何帮助都会很棒!
class TestWebViewController: UIViewController {
var loadSpinner: UIActivityIndicatorView!
var webView: UIWebView!
var title: String?
init(title: String?) {
self.title = title
self.webView = UIWebView(frame: CGRect.zero)
super.init(nibName: nil, bundle: nil)
commonInit()
}
func commonInit() {
loadSpinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
loadSpinner.center = webView.center
view.addSubview(loadSpinner)
webView.delegate = self
view = webView
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
UINavigationController(rootViewController: testWebViewController)
即使我尝试将loadSpinner添加到webView,它也不会出现webView.addSubview(loadSpinner)
码:
class ViewController: UIViewController {
var loadSpinner: UIActivityIndicatorView!
var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
self.webView = UIWebView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
loadSpinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
webView.addSubview(loadSpinner)
view = webView
loadSpinner.startAnimating()
}
override func viewDidLayoutSubviews() {
loadSpinner.center = webView.center
}
}
您的主要问题是您首先将活动指示符添加到视图控制器的视图中,但稍后您将使用Web视图替换视图控制器的视图。
如果要替换视图控制器的视图,则应在loadView
中执行此操作。您还应该在viewDidLoad
中设置其他视图,而不是在init
方法中。
最简单的改变是摆脱你的commonInit
方法并将所有代码放在viewDidLoad
中。然后在viewDidLoad
中,首先设置Web视图,然后设置活动指示器。
class TestWebViewController: UIViewController {
var loadSpinner: UIActivityIndicatorView!
var webView: UIWebView!
var title: String?
init(title: String?) {
self.title = title
super.init(nibName: nil, bundle: nil)
}
override func loadView() {
// don't call super
webView = UIWebView(frame: CGRect.zero)
webView.delegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
loadSpinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
loadSpinner.center = view.center
// Keep it in the center
loadSpinner.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin]
view.addSubview(loadSpinner)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
您还有title
的问题。 UIViewController
已经有一个title
财产。你不应该添加自己的。
您需要在viewDidLoad
中重构这样的代码
class TestWebViewController: UIViewController {
var loadSpinner: UIActivityIndicatorView!
var webView: UIWebView!
var title: String?
override func viewDidLoad()
{
super.viewDidLoad()
webView = UIWebView(frame:self.view.frame)
webView.delegate = self
self.view.addSubview(webview)
loadSpinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
self.view.addSubview(loadSpinner)
loadSpinner.center = self.view.center
loadSpinner.startAnimating()
}
}
以上是关于UIActivityIndi catorView未在webview中显示的主要内容,如果未能解决你的问题,请参考以下文章
UIActivityIndicatorView 不工作(获取影响 UIActivityIndicatorView 的 Facebook 权限)
UIActivityIndicatorView 正确使用
UIActivityIndi catorView未在webview中显示