开发中遇到这么个问题,就是给webView添加监听后,一直不走监听的方法,很是让人郁闷啊,就是下面的这个方法 网上找了好多试了下依然没有任何起色
[selfwebViewscrollView addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:nil];
-(void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> )change context:(void )context {
if ([keyPath isEqualToString:@"contentSize"]) {
CGSize fittingSize = [selfwebView sizeThatFits:CGSizeZero];
selfwebViewframe = CGRectMake(38, 5, kScreenWidth-38 2, fittingSizeheight);
}
}
后来实在没有办法,很偶然的把webView初始化时设置的高度改成了1,然后奇迹出现了 方法开始正常走了,原来是刚开始设置的webView的高度,大于了webView内容的高度,导致kvo监听不到高度变化,那自然方法也不会走了。特此记下此坑谨防在被坑到
因为需求,所以在XML布局中,设置WebView高度为wrap_content(自适应),但是页面加载内容存在视频,视频全屏后,页面存在留白。
我的思路是在页面加载完成的时候,修改webview的高度。
所以我们设置WebViewClient监听,在onPageFinished方法中,通过重新设置LayoutParams去修改webview的高度。
如果单纯只是视频全屏,没有其他 *** 作,这种应该是满足了。但是我还有字体大小变化,所以还是有问题,最后采用办法还是通过JS,告诉客户端页面高度,然后通过LayoutParams设置。
字型的高宽,这个没法量的,因为好多字型,不同字元下大小不一样,比如 a 就是比 i 宽。
我猜你的问题应该是应该是获取一个具有特定字型,字号的字串的宽度和高度吧。
你可以新建一个span标签,隐藏标签,把你的字串放进去,赋上你想要的字型,字号。然后度量这个span的宽度和宽度就好了。这个span的宽高就是字串的宽高。
JS根据字号获取字型的宽度给元素然后取他的clientHeight就OK了
Java怎么获取字串的宽度和高度, java 能获取到文字所使用某种字型后的宽度及高度吗字串没有高和宽的概念,这是一个伪命题,请考虑重新修改问题;
如果你值的是在ui上显示字串的控制元件的高和宽,那么需要获取到这个控制元件的例项,然后呼叫控制元件的响应函式,比如getHeight之列的方法来获取你想要的资讯。
8开大小的纸的宽度和高度宽是555厘米/高是37厘米。绝对正确
190A喷码机怎样调字型的宽度,高度是金诺的190A吧,调字型的大小只要用滑鼠选中所要调节的字,再根据需要调节字型的大小即可,主要是要用滑鼠选好字了
火狐书签栏怎样改变宽度,高度以及字型的大小
不可以直接调节宽度,但可以把其他栏关闭来增加其宽度,
1、开启浏览器,
2、右键标签栏空白处,
3、出现以下选项,并把外挂栏和其他与其同一行的栏去勾选即可。
怎样获取UIWebView 的文字的高度#import"ViewControllerh"
@interfaceViewController()
@property(nonatomic,strong)UIWebViewwebView;
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
_webView= [[UIWebViewalloc]initWithFrame:CGRectMake(0,0,selfviewframesizewidth,1)]; 1随便多少,不能为0
_webViewdelegate=self;
[selfviewaddSubview:_webView];
_webViewscalesPageToFit=YES;
NSURLRequestrequest =[NSURLRequestrequestWithURL:[NSURLURLWithString:@":1921681123:3199/5/Html5Article/ArticleDetailaid=7e15de0a-20be-11e6-a7ad-78e3b5a9d432"]];
[_webViewloadRequest:request];
}
- (void)webViewDidFinishLoad:(UIWebView)webView{
CGFloatsizeHeight = [[webViewstringByEvaluatingJavaScriptFromString:@"documentbodyoffsetHeight;"]floatValue];
NSLog(@"contentWebView sizeHeight====%f",sizeHeight 05); 05自认为是画素的问题
1039pt=多少大小的字型1pt=03514(美国,日本)
1pt=03528(美国)
103903514=365
3654=146Q
15Q就可以了
textview中每个文字的高度和宽度,有办法获取吗webviewgetContentHeight(); 获取内容高度 获取内容宽度的话。。除非通过js伺服器那边返回,,
一 在UIWebView中使用flashScrollIndicators
使用UIScrollView时,我们可以使用flashScrollIndicators方法显示滚动标识然后消失,告知用户此页面可以滚动,后面还有更多内容。UIWebView内部依赖于UIScrollView,但是其没有flashScrollIndicators方法,但可以通过其他途径使用此方法,如下所示。
for (id subView in [webView subviews]) { if ([subView respondsToSelector:@selector(flashScrollIndicators)]) { [subView flashScrollIndicators]; } }
上述代码片段可以到webViewDidFinishLoad回调中使用,加载完网页内容后flash显示滚动标识。
二去除UIWebView的背景阴影
假设一个UIWebView是白底黑字的,当用户拖动UIWebView时,会看到后面的背景阴影,如下图所示。
可以使用下述代码去除阴影,并将背景设为白色。
if ([[webView subviews] count] > 0) { // hide the shadows for (UIView shadowView in [[[webView subviews] objectAtIndex:0] subviews]) { [shadowView setHidden:YES]; } // show the content [[[[[webView subviews] objectAtIndex:0] subviews] lastObject] setHidden:NO]; } webViewbackgroundColor = [UIColor whiteColor];
使用此代码后的拖动效果如图所示。
三根据内容获取UIWebView的高度
有时候需要根据不同的内容调整UIWebView的高度,以使UIWebView刚好装下所有内容,不用拖动,后面也不会留白。有两种方式可根据加载内容获取UIWebView的合适高度,但都需要在网页内容加载完成后才可以,即需要在webViewDidFinishLoad回调中使用。
1使用sizeThatFits方法。这样就可以用手指来控制网页的放大缩小了。
- (void)webViewDidFinishLoad:(UIWebView )webView { CGRect frame = webViewframe; framesizeheight = 1; webViewframe = frame; CGSize fittingSize = [webView sizeThatFits:CGSizeZero]; framesize = fittingSize; webViewframe = frame; }
sizeThatFits方法有个问题,如果当前UIView的大小比刚好合适的大小还大,则返回当前的大小,不会返回最合适的大小值,所以使用sizeThatFits前,先将UIWebView的高度设为最小,即1,然后再使用sizeThatFits就会返回刚好合适的大小。
2使用JavaScript
- (void)webViewDidFinishLoad:(UIWebView )webView { CGRect frame = webViewframe; NSString fitHeight = [webview stringByEvaluatingJavaScriptFromString:@"documentbodyscrollHeight;"]; framesizeheight = [fitHeight floatValue]; webViewframe = frame; }
使用UIWebView的stringByEvaluatingJavaScriptFromString方法,执行JavaScript语句documentbodyscrollHeight;可获取当前网页正文的全文高,测试时曾错误的使用了documentbodyoffsetHeight。
3限制
这两种方法都只能在加载网页完成时才能使用,当在UITableView中的UITableViewCell包含UIWebView时,无法在tableView:heightForRowAtIndexPath:中获取到UIWebView最合适的高度,也就无法确定UITableViewCell的合适高度。 Any Ideas
1 webView加载H5链接,设置它为tableView的 headerView,下方评论信息用Cell加载展示。
2 在webView的回调方法webViewDidFinishLoad中获取网页内容高度,设置为webView的高度,重新将webView赋给tableView的headerView。
Tip: 将一个View赋值给UITableView的tableHeaderView时,不需要手动设置高度,HeaderView会自动使用View的高度。
像上面这样,类似的方法很多,无论是JS获取,还是contentSize获取,最后结果都难以获取到准确高度,并非方法不行,而是:
以上就是关于iOS kvo监听不到webView的高度变化全部的内容,包括:iOS kvo监听不到webView的高度变化、解决:WebView高度自适应,视频全屏后,页面留白问题、js 怎样获取字型的宽度和高度 比如9pt这样大小的文字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)