2015-02-11 40 views
0

用到的技术:的XCode 6 iOS8上,斯威夫特DELAY问题:如何在应用样式之前立即应用样式或不显示加载的网页?

我加载在一个UIWebView一个网页,我也追加了新的样式到网页的主体和覆盖它的一些风格。但是,在网页加载和样式应用之间存在延迟(可能为1秒或2秒),因此您可以在重新调整网页之前查看网页。我正在使用JavaScript将新样式附加到网页正文。我如何解决这个问题,以便网页只显示样式已经应用?这里是我的代码:

进口的UIKit

类SecondViewController:UIViewController中,UIWebViewDelegate {

@IBOutlet var website: UIWebView! 

var url = "http://www.fake-website-url.net" 

func loadUrl() { 
    let requestURL = NSURL(string: url) 
    let request = NSURLRequest(URL: requestURL!) 
    website.loadRequest(request) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    website.delegate = self 
    loadUrl() 
} 

func webViewDidFinishLoad(website: UIWebView) { 
    var loadStyles = "var script = document.createElement('link');script.type = 'text/css';script.rel = 'stylesheet';script.href = 'http://fake-url.styles.css';document.getElementsByTagName('body')[0].appendChild(script);" 
    website.stringByEvaluatingJavaScriptFromString(loadStyles) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

注意,我使用的是斯威夫特。

回答

1

我会做的是创建一个属性来存储下载的页面。然后重写属性设置器,在页面保存到该属性后添加自定义样式表。然后最后将其加载到您的Web视图中。

希望是有道理的。

+0

嗨埃里昂 - 感谢您的想法 - 你能给我一个类似的实现代码示例吗? – 2015-02-11 15:43:15

+1

我从来没有使用过Swift,只是客观的c对不起。这就是为什么我没有包含任何代码。这是我发现的一个链接,可能会对你有所帮助。 http://blog.johnregner.com/post/103092814578/swift-properties-custom-setters-and-getters – 2015-02-11 16:28:07

+0

谢谢埃里昂 - 我会看看那个博客... – 2015-02-12 05:30:59