[英]How to make UIWebViews scale to fit inside collectionView cells?
我正在加載UIWebView
的collectionView
單元內部。 在屬性檢查器中,我已經檢查了“將頁面縮放到適合”以及“內容模式”到“縱橫比適合”,但是我的應用程序中的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)
}
}
給cell.bounds
到cell.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.