2016-09-07 1 views
0

webView를 기반으로 간단한보기를 만들고 있습니다. 을 viewDidLoad에 간단하게 호출하고 싶었지만 제대로 작동하지 않았습니다. 내가 원했던 견해는 괜찮 았지만, 이미 크기가 조정 된 상태의 뷰가 크기가 조정되고 늘어났습니다. 이는 내가 피하고 싶었던 것입니다. 이것이로드 된 컨텐츠가 화면보다 더 넓은 지 확인하는 이유입니다.Swift에서 다른 라이프 사이클 순간에 scalePagesToFit을 적용하는 방법은 무엇입니까?

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 이후의 내용을 측정 할 수 있습니다. scalesPagesToFit이 작동하지 않아 주로 viewWillAppear 또는 viewDidAppear에 넣으려고했으나 작동하지 않는 것 같습니다. 유일하게 작동하는 so-so 솔루션은 didSetviewDidLoad을 넣었습니다. 그러나 그것이 작동하는 방식을 추측 할 수 있습니다. 전체 화면이 화면보다 더 넓은 내용에 대해 깜박이고 다시로드됩니다. 저에게 어떤 아이디어 나 힌트가 있습니까?

답변

0

나는 새로운 방법을 만드는 것으로 이동하여 해결했습니다. loadWebContent(). 그 다음은 didSet에 두 번째 시간보다 viewDidLoad에 한 번이라고 그

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

처럼 그래서 내가 여기에 관련된 모든 웹보기로드를 이동합니다. 그리고 didSet은 다시 작성되고 단순화되었습니다.

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

간단합니다! 나는 그 사람이 도움이되기를 바랍니다.