2017-10-06 89 views
1

我正在使用xcode 9/swift 4.我有一個WKWebView作爲插座的簡單UIViewController。爲什麼是UIActivityIndi​​catorView!零時解開?

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(旋轉器)。

謝謝。

回答

2
  1. 你有一個webView是一個插座,但你也創建它在loadView。如果它是你在Storyboard中創建的東西的出口,那麼你不應該這樣做。

  2. 您創建的webView有一個.zero框架。在viewDidLoad中,它可能仍然是.zero(檢查) - 在這種情況下,微調器在0,0。

  3. 你可以讓紡紗機出口。只要知道它只能在viewDidLoad或之後變得可用,而不是在loadView中(在使用Storyboard時通常不會覆蓋)。如果你在該代碼中做過,那麼你已經停止了故事板被加載。您可以撥打super.loadView(),但我甚至不會覆蓋。

這是我會做:

  1. 擺脫你loadView的。
  2. 使webView成爲self.view的一個正常子節點 - 不要嘗試爲其設置視圖。
  3. 添加微調作爲出口
  4. 唯一獲得viewDidLoad中微調或更高版本
  5. 使用自動佈局定位和尺寸的一切(不只是設置中心)

(或者,如果你真的設置的loadView和獲取視圖作爲web視圖)

  1. 擺脫故事板,並盡一切編程
  2. 設置的位置當你知道webView有一個大小(使用自動佈局來讓這一切自動發生)時,微調控制器。
相關問題