Ios 如果在显示视图后调用函数,UIView性能问题
我有一个Ios 如果在显示视图后调用函数,UIView性能问题,ios,swift,animation,uiview,uibutton,Ios,Swift,Animation,Uiview,Uibutton,我有一个ui视图,它显示在单击ui按钮时。问题是,这个视图用于抓取网站,因此在显示实际视图之前,我有一个封面视图,带有加载动画,直到从网站抓取数据为止: @objc func addWishButtonTapped() { self.coverView.isHidden = false self.loadingAnimation.play() self.wishView.isHidden = false self.cancelButton.isHidden = f
ui视图
,它显示在单击ui按钮
时。问题是,这个视图
用于抓取网站,因此在显示实际视图之前,我有一个封面视图
,带有加载动画
,直到从网站抓取数据为止:
@objc func addWishButtonTapped() {
self.coverView.isHidden = false
self.loadingAnimation.play()
self.wishView.isHidden = false
self.cancelButton.isHidden = false
self.wishView.dropDownButton.dropView.dropOptions = dropOptions
crawlWebsite {
DispatchQueue.main.async {
self.hideLoadingView()
}
}
}
我的问题是,像上面那样调用crawlWebsite
时,动画笨重且看起来不平滑:
我发现当我不打电话给爬行网站时,它看起来非常平滑:
这是爬行网站
:
func crawlWebsite(finished: @escaping () -> Void){
var html: String?
let url = webView.url
html = (self.getHTMLfromURL(url: url))
print(url as Any)
let directoryURL = url! as NSURL
let urlString: String = directoryURL.absoluteString!
// save url to wish
self.wishView.link = urlString
OpenGraphDataDownloader.shared.fetchOGData(urlString: urlString) { result in
switch result {
case let .success(data, _):
// get productTitle
guard let title = data.pageTitle else {finished(); return}
print(title)
DispatchQueue.main.async {
self.wishView.wishNameTextField.text = title
self.wishView.enableButton()
}
// get productImage
guard let imageURL = data.imageUrl else {finished(); return }
UIImage.loadFrom(url: imageURL, completion: { (image) in
guard let image = image else { return }
self.wishView.wishImageView.image = image
self.imagesArray.append(image)
self.wishView.hideAddImageButton()
self.wishView.showImageView()
finished()
})
finished()
case let .failure(error, _):
finished()
print("OpenGraph-error: " + error.localizedDescription)
}
}
DispatchQueue.main.async {
self.getContentFromHTML(html: html)
}
}
我被困在这里,不知道这里发生了什么。有人有主意吗?试着在后台线程中调用
crawlWebsite
。self.getContentFromHTML(html:html)在做什么?另外,我可能会将每个视图更新移动到完成处理程序中,并且只访问那里的主线程。@krlbsk我该怎么做?@christryDispatchQueue.global().async{self.crawlWebsite{…}}
@MarcoBoerner它正在HTML中搜索价格和图像