Я делаю простой просмотр на основе 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
. Но вы можете догадаться, как он работает - весь взгляд мигает и перезагружается для контента шире экрана. У вас есть идеи или намеки на меня?