UIWebView 实现自适应高度
2016-02-29 22:02
295 查看
UIWebView加载本地html文件,要做到自适应高度,以满足视图其他控件对它的位置的依赖,比如webView 下面还有两个button, button的frame要根据webView的实际高度来计算,实现方法即可以调用webView代理方法, 有以下4种方法:
方法1:获取webview中scrovllview的contentsize进行设置
#pragma mark - webView Delegate
-(void)webViewDidFinishLoad:(UIWebView*)webView{
//capture the contentSize of WebView, and reset self.myWebView frame
CGFloat webViewHeight = [webView.scrollView contentSize].height;
CGRect newFrame = webView.frame;
newFrame.size.height = webViewHeight;
webView.frame = newFrame;
}
方法2:执行js语句 直接获取html文档的dom高度
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGFloat webViewHeight=
[[webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"]floatValue];
// CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]floatValue];
CGRect newFrame = webView.frame;
newFrame.size.height = webViewHeight;
webView.frame = newFrame;
}
//方法3.先将UIWebView的高度设为最小,然后再使用sizeThatFits就会返回刚好合适的大小
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGSize actualSize =[webView sizeThatFits:CGSizeZero];
CGRect newFrame = webView.frame;
newFrame.size.height = actualSize.height;
webView.frame = newFrame;
}
//方法4.遍历webview子视图 获取UIWebDocumentView高度即实际高度
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGFloat webViewHeight = 0.0f;
if([webView.subviews count] > 0){
UIView *scrollerView = webView.subviews[0];
if([scrollerView.subviews count]>0){
UIView *webDocView = scrollerView.subviews.lastObject;
if([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView")class]])
{
webViewHeight = webDocView.frame.size.height;//获取文档的高度
webView.frame = webDocView.frame;
//更新UIWebView 的高度
}
}
}
}
方法1:获取webview中scrovllview的contentsize进行设置
#pragma mark - webView Delegate
-(void)webViewDidFinishLoad:(UIWebView*)webView{
//capture the contentSize of WebView, and reset self.myWebView frame
CGFloat webViewHeight = [webView.scrollView contentSize].height;
CGRect newFrame = webView.frame;
newFrame.size.height = webViewHeight;
webView.frame = newFrame;
}
方法2:执行js语句 直接获取html文档的dom高度
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGFloat webViewHeight=
[[webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"]floatValue];
// CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]floatValue];
CGRect newFrame = webView.frame;
newFrame.size.height = webViewHeight;
webView.frame = newFrame;
}
//方法3.先将UIWebView的高度设为最小,然后再使用sizeThatFits就会返回刚好合适的大小
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGSize actualSize =[webView sizeThatFits:CGSizeZero];
CGRect newFrame = webView.frame;
newFrame.size.height = actualSize.height;
webView.frame = newFrame;
}
//方法4.遍历webview子视图 获取UIWebDocumentView高度即实际高度
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGFloat webViewHeight = 0.0f;
if([webView.subviews count] > 0){
UIView *scrollerView = webView.subviews[0];
if([scrollerView.subviews count]>0){
UIView *webDocView = scrollerView.subviews.lastObject;
if([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView")class]])
{
webViewHeight = webDocView.frame.size.height;//获取文档的高度
webView.frame = webDocView.frame;
//更新UIWebView 的高度
}
}
}
}
相关文章推荐
- Android 集成facebook 第三方登陆
- Unity5 弹力球的制作
- Android 之 SystemService
- Android Studio ——Android Studio如何集成Genymotion
- android:Notification实现状态栏的通知
- Android之SurfaceView使用总结
- ANDROID 项目 Proguard对android.support.v4.包的配置
- Android不同APP之间共享数据的方式
- Android工程师入门(一)——这周入大门,挤时间,轻喷
- android对启动模式的深入了解
- iOS中的 ARC 与 MRC混编
- Android 自定义View (一)
- Android 之 zygote 与进程创建
- Android 替换应用内so文件避免每次都要重新打包的麻烦
- 理解Android中的线程及线程间通信
- Setting Up the Action Bar --1.1.1
- Android Json浅析
- 【Android】15.5 例15-3—Notification的各种属性演示
- 菜鸟的Android之旅(一)
- Java Object类中equals()方法与String类中equals()方法的比较