ios为什么webview会多出下面tabbar的高度

ios为什么webview会多出下面tabbar的高度,第1张

方法1:获取webview中scrovllview的contentsize进行设置

-(void)webViewDidFinishLoad:(UIWebView

)webView{

CGFloat

webViewHeight=[webViewscrollView

contentSize]height;

CGRect

newFrame

=

webViewframe;

newFramesizeheight

=

webViewHeight;

webViewframe

=

newFrame;

}

方法2:执行js语句 直接获取html文档的dom高度

-(void)webViewDidFinishLoad:(UIWebView

)webView{

CGFloat

webViewHeight=

[[webView

stringByEvaluatingJavaScriptFromString:

@"documentbodyoffsetHeight"]floatValue];

// CGFloat webViewHeight= [[webView

stringByEvaluatingJavaScriptFromString:

@"documentbodyscrollHeight"]floatValue];

CGRect

newFrame

=

webViewframe;

newFramesizeheight

=

webViewHeight;

webViewframe

=

newFrame;

}

方法3先将UIWebView的高度设为最小,然后再使用sizeThatFits就会返回刚好合适的大小

-(void)webViewDidFinishLoad:(UIWebView

)webView{

CGSize

actualSize

=

[webView

sizeThatFits:CGSizeZero];

CGRect

newFrame

=

webViewframe;

newFramesizeheight

=

actualSizeheight;

webViewframe

=

newFrame;

}

方法4遍历webview子视图 获取UIWebDocumentView高度即实际高度

Objective-C

-(void)webViewDidFinishLoad:(UIWebView

)webView{

CGFloat

webViewHeight

=

00f;

if

([webViewsubviews

count]

>

0)

{

UIView

scrollerView

=

webViewsubviews[0];

if

([scrollerViewsubviews

count]

>

0)

{

UIView

webDocView

=

scrollerViewsubviewslastObject;

if

([webDocView

isKindOfClass:[NSClassFromString(@"UIWebDocumentView")

class]])

{

webViewHeight

=

webDocViewframesizeheight;//获取文档的高度

webViewframe=

webDocViewframe;

//更新UIWebView 的高度

}

}

}

}

User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随>

- (BOOL) webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType去拿 request的>

唯一的workaround就是给webview里相关请求缩短timeout时间,等待timeout之后会调用代理方法didFinishLoading,这时候再插入js代码。

但不过这种方式不是非常完美的方法,会继续研发。

由于最近产品要求能够将网页转换为一整张,预估整个网页的高度大概有10多个屏幕的高度,因此需要添加一个网页转换为的功能

如果是外部网页,可以用 Safari 浏览器的截长屏功能(需要iOS 130+)。但是,这次需要截取的内容是通过 APP 内的 UIWebView 显示的 HTML 网页,这就无法通过 iOS 自带的截屏功能实现了(都9012年了,iOS 怎么还没有截长屏功能?)。

相关链接:[iOS] UIScrollView (UIWebView) 截长屏功能实现

UIGraphics 实现起来比较简单,但是需要注意 运行内存的释放 问题。

CoreGraphics 速度快,占用空间手动释放,还可以使用异步实现,但是要花时间理解 CoreGraphics 的相关函数,需要对 CoreGraphics 绘制的进行翻转(这就涉及到 CoreGraphics 坐标系的问题)。

这两种方案中,更 推荐使用 CoreGraphics 来实现截屏功能 。

另外,在使用这两种方案的调试过程中,一定要时刻关注运行内存的变化。使用 iPhone 6 测试,当高度达到 20000 + 的时候,内存都会达到 450M 左右(上限 650M)。

(2) 添加截取的功能

(3) 添加保存到相册的功能

在实现这个功能之前,需要在infoplist中添加“Privacy - Photo Library Usage Description”,否则会造成 APP 崩溃。

(4) 绑定截图按钮事件

下面比较一下几种方式生成的效果图。图(1)是通过 UIGraphic 方法绘制的,图(2)是通过 CoreGraphics 方法绘制的,图(3)是使用 Safari 浏览器中整页截图生成的 PDF ,转换而成的。

以上就是关于ios为什么webview会多出下面tabbar的高度全部的内容,包括:ios为什么webview会多出下面tabbar的高度、浅谈iOS中的userAgent、uiwebview 如何获取post的请求数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9656112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存