当前位置: 首页 > 编程笔记 >

iOS获取cell中webview的内容尺寸

弓晔
2023-03-14
本文向大家介绍iOS获取cell中webview的内容尺寸,包括了iOS获取cell中webview的内容尺寸的使用技巧和注意事项,需要的朋友参考一下

最近项目中遇到在cell中获取webView的内容的尺寸的需求 实现的思路其实很简单 就是通过执行js 获取尺寸即可 为了后面用着方便我直接封装了一个HTML的cell 起名就叫 

STHTMLBaseCell 下面是实现代码:

#import "STBaseTableViewCell.h"@class STHTMLBaseCell;
@protocol STHtmlBaseDelegate <NSObject>
- (void)webViewDidLoad:(STHTMLBaseCell *)cell height:(CGFloat)height;
@end
@interface STHTMLBaseCell : STBaseTableViewCell
@property (weak, nonatomic) id<STHtmlBaseDelegate>delegate;

@end

以上是.h文件的实现 很简单 就是声明了 STHTMLBaseCell  然后创建了代理 这个代理方法 就是返回给外部webView的内容的高度的 

#import "STHTMLBaseCell.h"

@interface STHTMLBaseCell()<UIWebViewDelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;@end

@implementation STHTMLBaseCell

- (void)awakeFromNib {
  [super awakeFromNib];
  // Initialization code
  self.webView.scrollView.scrollEnabled = NO;
  self.webView.scrollView.pagingEnabled = NO;
  self.webView.delegate = self;
  self.webView.backgroundColor = [UIColor whiteColor];
}
- (void)configCellWithHtml:(NSString *)html //外界传入的html字符串
{
  [self.webView loadHTMLString:html baseURL:nil];//加载html
}

#pragma mrak - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
  
  [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='auto';"];//让用户可以选中webview里面内容
  [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='auto';"];//可以响应用户的手势
  
  NSURL *url = [request URL];
  if (![url host]) {
    return YES;
  }
 return NO;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
  CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:
             @"document.body.scrollHeight"] floatValue]; //获取webview内容的高度
  self.webView.height = height;
  if ([self.delegate respondsToSelector:@selector(webViewDidLoad:height:)]) {
    [self.delegate webViewDidLoad:self height:height];//调用代理的方法 
  }
}


@end

大致就这么简单  就能够在cell中获取webview 的内容尺寸了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我正在使用JAVAFX控件开发一个swing应用程序。在我的应用程序中,我必须打印出Webview中显示的html页面。我正在尝试的是借助HtmlDocuement将Webview的html内容加载为字符串。 要从Web视图加载html文件的内容,我正在使用以下代码,但无法正常工作: 问题答案: 返回,而不是您希望通过代码判断的JavaScript文档。 不幸的是,打印出来需要大量的编

  • 在react native中,如何获取webview中的某个标签的内容,例如: 在webview中,加载baidu.com,我要获取这个页面中选择器为#s_menu_mine的innerText. 这是我当前尝试的代码,gpt给我的,但是这并不能触发handleMessage,即使触发了,我也不确定方法内的代码是否正确,代码如下:

  • 本文向大家介绍ios 获取或修改网页上的内容,包括了ios 获取或修改网页上的内容的使用技巧和注意事项,需要的朋友参考一下 UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。 stringByEvaluatin

  • 还有一种调用模板的情况是我们只想渲染后返回模板渲染后的数据而不是直接输出,这时我们会用fetch方法; fetch的用法和display 完全一样,只是不直接输出了; //不带任何参数 $content=$this->fetch(); 此种方式系统会自动判断模板路径,并渲染出模板内容,此种方式模板路径是:主题名/应用名/控制器名/操作名+模板文件后缀名; $content=$this->fetc

  • 我想在中显示pdf文件的内容。 问题:当我启动时,一个新的对话框正在打开,不管我是想在浏览器中还是在pdf查看器中加载pdf。但我想直接在中加载内容。我还尝试了一个前缀url来嵌入内容,但结果显示:没有预览可用。 我的代码: 我现在用android-pdfView库用下面的代码尝试了一下: 但随后会在以下地址出现一个:。adress直接引用了我onedrive帐户中的pdf文件。所以当我在浏览器中

  • 问题内容: 我要执行以下操作。 我想要所有超链接的行为进行ajax调用并检索html。 不幸的是,您不能简单地用ajax响应中收到的html替换当前的html。 如何仅获取ajax响应的标记中的内容,以便 仅 替换现有html中正文的内容。 编辑:开始标记并不总是这样,有时可能会有一个类,例如 问题答案: 如果我对您的理解正确,请使用正则表达式在body标签之间获取内容。 编辑 根据您在下面的评论