2016-09-07 1 views
0

Я делаю простой просмотр на основе webView. Я хотел позвонить scalePagesToFit = true просто в viewDidLoad, но это не сработало. Взгляды, которые я хотел подгонять, были в порядке, но взгляды, которые уже были показаны правильно (без необходимости изменения размера), были изменены и растянуты - и этого я и хотел избежать. Вот почему я добавил проверку, если загруженный контент шире экрана.Как применить scalePagesToFit в другой момент жизненного цикла в Swift?

private var needsResize: Bool = false { 
     didSet { 
      if self.needsResize == true { 
       self.webView.scalesPageToFit = true 
      } else { 
       self.webView.scalesPageToFit = false 
      }}} 

override func viewDidLoad() { 
     super.viewDidLoad() 
     webView.delegate = self 
     self.webView.scrollView.maximumZoomScale = 20 
     self.webView.scrollView.minimumZoomScale = 0.5 

     (...) 
    } 

    func webViewDidFinishLoad(webView: UIWebView) { 
     let scrollWidth = self.webView.scrollView.contentSize.width 
     let screenSize: CGRect = UIScreen.mainScreen().bounds 
     let screenWidght = screenSize.width 

     if scrollWidth > screenWidght { 
      self.needsResize = true 
     } 
    } 

Основная проблема заключается в том, что жизненный цикл здесь не работает. Я могу измерить содержимое непосредственно перед viewWillAppear и после viewDidLoad. Я попытался поместить его в viewWillAppear или viewDidAppear, но он не работал, главным образом потому, что scalesPagesToFit не работал. Единственным работающим таким образом решением было положить viewDidLoad в didSet. Но вы можете догадаться, как он работает - весь взгляд мигает и перезагружается для контента шире экрана. У вас есть идеи или намеки на меня?

ответ

0

Я решил это, переместив новый метод, например, loadWebContent(). переместить все, WebView нагрузку, связанную здесь, так это нравится, что

loadWebContent(){ 
self.webView.loadHTMLString(text, baseURL: NSURL(fileURLWithPath: NSBundle.mainBundle().bundlePath)) 
} 

Тогда это называется один раз в viewDidLoad, чем во второй раз в didSet. И didSet был переписан и упрощен.

didSet { 
    self.webView.scalesPageToFit = self.needsResize 
    loadWebContent() 
} 

Простой как это! Надеюсь, это поможет кому-то.

 Смежные вопросы

  • Нет связанных вопросов^_^