6

サイズを変更することは絶対にできませんUIWebView

MyUIWebViewは .h で宣言され、IB では connected で宣言されます。IB の高さは 110 です。しかし、私のテキストの高さは約 1500 です。高さを変更して、スクロールせずにテキスト全体が読めるようにしたいと考えています。

で私UIWebViewのサイズを変更するコードは何webViewDidFinishLoadですか? 機能するものは何も見つかりません。

4

3 に答える 3

11

The UIScrollViewproperty is available for starting in iOS 5.次のように、デリゲートにメッセージをUIWebView実装することで、それを使用してビューのサイズを変更できます。webViewDidFinishLoad:

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect newBounds = webView.bounds;
    newBounds.size.height = webView.scrollView.contentSize.height;
    webView.bounds = newBounds;
}
于 2012-12-13T20:43:28.810 に答える
3

あなたは試しましたか:この答え

[編集]

これが機能していると言う人もいます:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

// Change the height dynamically of the UIWebView to match the html content
CGRect webViewFrame = webView.frame;
webViewFrame.size.height = 1;
webView.frame = webViewFrame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
webViewFrame.size = fittingSize;
// webViewFrame.size.width = 276; Making sure that the webView doesn't get wider than 276 px
webView.frame = webViewFrame;

float webViewHeight = webView.frame.size.height;
}

これは私がテストしていませんが、70 人がこの回答に ^ 投票しsizeTahtFits:CGSizeZero、frame.size のリセットのように設定することをお勧めします。

JavaScript を使用してこれを修正する人もいます。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *string = [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"body\").offsetHeight;"];
CGFloat height = [string floatValue] + 8;
CGRect frame = [_webView frame];
frame.size.height = height;
[_webView setFrame:frame];

if ([[self delegate] respondsToSelector:@selector(webViewController:webViewDidResize:)])
{
    [[self delegate] webViewController:self webViewDidResize:frame.size];
}
}
于 2012-12-13T11:08:57.280 に答える
2

上記のジョンとエリックが答えたように、このコードは機能します。

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect newBounds = webView.bounds;
    newBounds.size.height = webView.scrollView.contentSize.height;
    webView.bounds = newBounds;
}

ただし、このコードを試しているときに、適切な webview が返されることがわかりましたが、起源が不適切であることがわかりました。誰かに当てはまる場合は、このコードでリセットするだけです

webView.frame=CGRectMake(webView.frame.origin.x, webView.center.y, webView.frame.size.width, webView.frame.size.height);

y 軸が設定され、必要に応じて webView が取得されます。

于 2014-03-24T11:15:19.903 に答える