iOS kvo监听不到webView的高度变化

iOS kvo监听不到webView的高度变化,第1张

开发中遇到这么个问题,就是给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设置。

js 怎样获取字型宽度和高度 比如9pt这样大小的文字

字型的高宽,这个没法量的,因为好多字型,不同字元下大小不一样,比如 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这样大小的文字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存