ruh*_*uhu 7 iphone objective-c uiwebview ios
我有UIWebView动态设置高度的问题.webview加载包含html的产品说明.我希望UIWebView根据描述的内容改变它的高度.父滚动视图也应该改变它的高度,但是然后根据高度UIWebView.
任何人都可以向我解释如何实现我的观点所需的行为吗?
这是我的视图层次结构:

您必须在名为webViewDidFinishLoad的UIWebView的委托方法中添加一些代码.这是你可以做的:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
webView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
yourScrollView.contentSize = webView.bounds.size;
}
Run Code Online (Sandbox Code Playgroud)
使用javascript查找正确的高度也可以实现同样的目的,如下所示:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGRect oldBounds = [[self webView] bounds];
CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
NSLog(@"NEW HEIGHT %f", height);
[webView setBounds:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, oldBounds.size.width, height)];
yourScrollView.contentSize = webView.bounds.size;
}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
您可以在 WebView 上设置恒定的高度约束,并在根据响应计算高度后动态更改该约束。
NSLayoutConstraint 中的这个方法也可以实现子视图和父视图之间的约束
+ (id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12974 次 |
| 最近记录: |