iOS UIWebView加載,獲取WebView實際高度

需求:一個底部UIScrollView,上面是一個UIImageView,下面是一個UIWebView,要求加載完UIWebView,禁止UIWebView滾動,UIWebView全部顯示,如果大于屏幕高度,UIScrollView滾動,否則不滾動

根據(jù)需求需要獲取UIWebView的實際高度,以便設(shè)置UIScrollView的contentSize

1加載webView

@property (nonatomic,strong) UIWebView *webView;
-(UIWebView *)webView {
    if (!_webView) {
        _webView = [[UIWebView alloc]initWithFrame:CGRectZero];
        _webView.delegate = self;
        _webView.scalesPageToFit = YES;
        _webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        [_webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
    }
    return _webView;
}

2 當WebView加載完成后,禁止WebView滾動

#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    webView.scrollView.scrollEnabled = NO;
}

3 KVO監(jiān)聽webView的contentSize變化,拿到實際高度,重置約束,設(shè)置UIScrollView的contentSize

#pragma mark - KVO
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"contentSize"]) {
        
        CGPoint point = [change[@"new"] CGPointValue];
        
        CGFloat height = point.y;
        NSLog(@"point.y---%f",height);
        
        CGSize fittingSize = [_webView sizeThatFits:CGSizeZero];
        
        CGFloat webHeight = fittingSize.height;

        [self.webView mas_remakeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(self.topView.mas_bottom);
            make.left.right.equalTo(self.view);
            make.height.mas_equalTo(webHeight);
        }];
        self.bgScrollView.contentSize = CGSizeMake(self.view.ssWidth, self.topView.ssHeight+webHeight);
    }
}

大功告成,另外說一下為什么不在webViewDidFinishLoad中直接獲取webView高度,因為如果webView中加載的有圖片,如果圖片顯示慢了,就可能在webViewDidFinishLoad中拿不到圖片高度,這樣拿到的高度有可能偏低,所以我這里通過KVO拿webView高度,而不是在webViewDidFinishLoad中直接獲取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容