第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確定UIWebView的內(nèi)容大?。?/h1>

如何確定UIWebView的內(nèi)容大???我有一個UIWebView具有不同的(單頁)內(nèi)容。我想知道CGSize適當(dāng)調(diào)整父視圖大小的內(nèi)容。明目張膽-sizeThatFits:不幸的是,只返回WebView的當(dāng)前幀大小。
查看完整描述

3 回答

?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個贊

結(jié)果我第一次猜到-sizeThatFits:并沒有完全錯。它似乎有效,但前提是WebView的幀在發(fā)送之前被設(shè)置為最小大小。-sizeThatFits:..在此之后,我們可以通過適當(dāng)?shù)某叽鐏砑m正錯誤的幀大小。這聽起來很可怕,但其實(shí)沒那么糟。因?yàn)槲覀儍蓚€幀都是在彼此之后進(jìn)行更改的,所以視圖不會更新,也不會閃爍。

當(dāng)然,我們必須等到內(nèi)容加載之后,所以我們將代碼放入-webViewDidFinishLoad:委托方法

OBJ-C

-?(void)webViewDidFinishLoad:(UIWebView?*)aWebView?{
????CGRect?frame?=?aWebView.frame;
????frame.size.height?=?1;
????aWebView.frame?=?frame;
????CGSize?fittingSize?=?[aWebView?sizeThatFits:CGSizeZero];
????frame.size?=?fittingSize;
????aWebView.frame?=?frame;

????NSLog(@"size:?%f,?%f",?fittingSize.width,?fittingSize.height);}

SWIFT 4.x

func?webViewDidFinishLoad(_?webView:?UIWebView)?{
????var?frame?=?webView.frame
????frame.size.height?=?1
????webView.frame?=?frame
????let?fittingSize?=?webView.sizeThatFits(CGSize.init(width:?0,?height:?0))
????frame.size?=?fittingSize
????webView.frame?=?frame}

我應(yīng)該指出另一種方法使用JavaScript。不確定哪種解決方案效果更好。

兩個討厭的解決方案我更喜歡這個。


查看完整回答
反對 回復(fù) 2019-07-15
?
至尊寶的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個贊

我有另一個很好的解決方案。

一方面,Ortwin的方法和解決方案只適用于IOS 6.0及更高版本,但無法在IOS 5.0、5.1和5.1.1上正確工作;另一方面,我不喜歡也不能理解Ortwin的方法,這是方法的使用。[webView sizeThatFits:CGSizeZero]帶參數(shù)CGSizeZero如果您閱讀了有關(guān)此方法及其參數(shù)的蘋果正式文檔,它會清楚地說明:

此方法的默認(rèn)實(shí)現(xiàn)返回視圖邊界矩形的大小部分。子類可以重寫此方法,以根據(jù)任何子視圖的所需布局返回自定義值。例如,UISwitc對象返回一個固定大小值,該值表示開關(guān)視圖的標(biāo)準(zhǔn)大小,而UIImageView對象返回它當(dāng)前顯示的圖像的大小。

我的意思是,就像他在沒有任何邏輯的情況下遇到了他的解決方案,因?yàn)樽x取文檔,參數(shù)傳遞給[webView sizeThatFits: ...]至少應(yīng)該width..使用他的解決方案,所需的寬度設(shè)置為webView呼叫前的幀sizeThatFits帶著CGSizeZero參數(shù)。因此,我認(rèn)為這個解決方案是在iOS 6上“偶然”地工作。

我設(shè)想了一種更合理的方法,它的優(yōu)點(diǎn)是適用于iOS 5.0和更高版本.在復(fù)雜的情況下,多個WebView(及其屬性)webView.scrollView.scrollEnabled = NO嵌入在scrollView.

下面是強(qiáng)制執(zhí)行webView達(dá)到想要的width并得到相應(yīng)的height回到webView本身:

OBJ-C

- (void)webViewDidFinishLoad:(UIWebView *)aWebView{   
    aWebView.scrollView.scrollEnabled = NO;    // Property available in iOS 5.0 and later 
    CGRect frame = aWebView.frame;

    frame.size.width = 200;       // Your desired width here.
    frame.size.height = 1;        // Set the height to a small one.

    aWebView.frame = frame;      
     // Set webView's Frame, forcing the Layout of its embedded scrollView with current Frame's constraints (Width set above).

    frame.size.height = aWebView.scrollView.contentSize.height;  // Get the corresponding height from the webView's embedded scrollView.

    aWebView.frame = frame;       // Set the scrollView contentHeight back to the frame itself.}

SWIFT 4.x

func webViewDidFinishLoad(_ aWebView: UIWebView) {

    aWebView.scrollView.isScrollEnabled = false
    var frame = aWebView.frame

    frame.size.width = 200
    frame.size.height = 1

    aWebView.frame = frame
    frame.size.height = aWebView.scrollView.contentSize.height

    aWebView.frame = frame;}

注意,在我的示例中,webView被嵌入自定義scrollView有其他webViews..所有這些webViewswebView.scrollView.scrollEnabled = NO,我必須添加的最后一段代碼是計(jì)算height.的.contentSize我的習(xí)俗scrollView嵌入這些webViews,但就像總結(jié)我的webViewframe.size.height用上面描述的技巧計(jì)算.。


查看完整回答
反對 回復(fù) 2019-07-15
?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊

這個webViewDidFinishLoad方法可以多次調(diào)用,第一個值由sizeThatFits只是最終尺寸的一部分。然后不管出于什么原因下一次打電話到sizeThatFits什么時(shí)候webViewDidFinishLoad再次觸發(fā)將錯誤地返回與以前相同的值!這將隨機(jī)發(fā)生在相同的內(nèi)容上,就好像是某種并發(fā)問題一樣。也許隨著時(shí)間的推移,這種行為已經(jīng)改變了,因?yàn)槲艺跒閕OS 5構(gòu)建并且發(fā)現(xiàn)sizeToFit以同樣的方式工作(雖然以前沒有?)

我已經(jīng)決定了這個簡單的解決辦法:

-?(void)webViewDidFinishLoad:(UIWebView?*)aWebView{????????
????CGFloat?height?=?[[aWebView?stringByEvaluatingJavaScriptFromString:@"document.height"]?floatValue];
????CGFloat?width?=?[[aWebView?stringByEvaluatingJavaScriptFromString:@"document.width"]?floatValue];
????CGRect?frame?=?aWebView.frame;
????frame.size.height?=?height;
????frame.size.width?=?width;
????aWebView.frame?=?frame;}

SWIFT(2.2):

func?webViewDidFinishLoad(webView:?UIWebView)?{

????if?let?heightString?=?webView.stringByEvaluatingJavaScriptFromString("document.height"),
????????widthString?=?webView.stringByEvaluatingJavaScriptFromString("document.width"),
????????height?=?Float(heightString),
????????width?=?Float(widthString)?{

????????var?rect?=?webView.frame
????????rect.size.height?=?CGFloat(height)
????????rect.size.width?=?CGFloat(width)
????????webView.frame?=?rect????}}

更新:我發(fā)現(xiàn),正如評論中提到的,這似乎沒有抓住內(nèi)容縮水的情況。不確定所有的內(nèi)容和操作系統(tǒng)版本是否正確,試一試。


查看完整回答
反對 回復(fù) 2019-07-15
  • 3 回答
  • 0 關(guān)注
  • 500 瀏覽

添加回答

了解更多

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號