簡體   English   中英

如何使UIWebViews縮放以適合collectionView單元?

[英]How to make UIWebViews scale to fit inside collectionView cells?

我正在加載UIWebViewcollectionView單元內部。 在屬性檢查器中,我已經檢查了“將頁面縮放到適合”以及“內容模式”到“縱橫比適合”,但是我的應用程序中的WebView不能正確縮放嗎?

private let reuseIdentifier = "bookCell"

class BookResultsCollectionViewController: UICollectionViewController, UIWebViewDelegate {

    @IBOutlet weak var webView: UIWebView!
    var receivedURLs = [NSURL]()
    var contentSize = CGSize()


    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! BookResultsCollectionViewCell

        cell.webView.loadRequest(URLRequest(url: receivedURLs[indexPath.row] as URL))

        cell.webView.delegate = self

        return cell
    }



    func webViewDidFinishLoad(_ webView: UIWebView) {
        contentSize = webView.sizeThatFits(CGSize.zero)
        webView.scrollView.zoom(to: CGRect(x: 0,y: 0, width: contentSize.width, height: contentSize.height), animated: false)

    }
}

產生的CollectionView: 在此處輸入圖片說明

cell.boundscell.webView.frame

在您的collectionView方法cellForItemAt

設置下面的代碼,

cell.webView.frame = cell.bounds

UIWebViewDelegate有一個稱為webViewDidFinishLoad的方法,當時,使用以下方法獲取內容的大小:

let contentSize = webView.sizeThatFits(CGSizeZero).

然后使用類似UIScrollView的 zoom方法縮放以適合整個內容:

webView.scrollView.zoom(to: CGRect(x: 0,y: 0, width: contentSize.width, height: contentSize.height), animated: true)

如果您不希望用戶在加載完成后看到每個webView縮放,則將animation設置為false。

注意:如果webView加載的屏幕的比率-寬高比與單元格的比率不同,則此方法無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM