ios - 如果在显示视图后调用函数,则 UIView 性能问题
问题描述
我有一个UIView
在单击 a 时出现的UIButton
。问题是这view
是针对scraping
一个网站的,所以在显示实际视图之前,我有一个coverView
显示的loadingAnimation
,直到从网站上抓取数据:
@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
像上面那样调用时,动画很笨拙并且看起来不流畅:
我发现当我不调用crawlWebsite
它时它看起来非常流畅:
这是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)
}
}
我很困在这里,不知道这里发生了什么。有人有想法吗?
解决方案
推荐阅读
- java - 使用 Apache Poi 从具有固定位置的模板复制表
- python - 在 SqlAlchemy 中,如何使用 DateTime 列的日期部分和另一列创建 UniqueConstraint?
- python - 使用 Robot 框架,我如何解析 XML 并验证数据?
- python - 如何在 pyspark 上创建分层拆分训练、验证和测试集?
- ruby-on-rails - 为什么 Geocoder.search("Sam Francisco") 返回“大马士革,叙利亚”?
- excel - 在 Excel 中,我如何找到命名范围中最小值的单元格引用
- mysql - 如何创建一个由两个外键组成的复合键引用其他表的表?
- svelte - 来自 Javascript 的 Svelte 挂载 DOM 元素
- sql - 计算运行总计 - TSQL?
- c# - 在 OData 中包含额外的属性,而不更改有效负载 (uri)