Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果在显示视图后调用函数,UIView性能问题_Ios_Swift_Animation_Uiview_Uibutton - Fatal编程技术网

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我该怎么做?@christry
DispatchQueue.global().async{self.crawlWebsite{…}}
@MarcoBoerner它正在HTML中搜索价格和图像