最近项目中遇到在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 的内容尺寸了。

最新文章

  1. ajax实现局部刷新
  2. Oracle的一些操作
  3. 【C#公共帮助类】DateTimeHelper设置电脑本地时间,实际开发很需要
  4. Linux 下的dd命令使用详解(摘录)
  5. Beta版本冲刺第七天 12.13
  6. 【python】词法语法解析模块ply
  7. [Express] Level 3: Massaging User Data
  8. Context Menu on DataGrid
  9. 子级Repeater获取 父级Repeater
  10. Android中如何判断是否联网
  11. iOS 之 const
  12. jquery 禁止herf跳转,并执行相应的js代码
  13. 20155205 郝博雅 Exp9 Web安全基础
  14. node.js总结
  15. 10.3制作Android Splash启动界面
  16. jmeter获取token并请求失败Internal authentication failed 400
  17. 捕获程序异常之tryCatch
  18. MySQL之——查询重复记录、删除重复记录方法大全
  19. Java里的常用运算符及其优先级顺序
  20. Robot Framework(Screenshot 库)

热门文章

  1. asp.net 使用DroDownList来实现二级联动
  2. 科学计算软件——Octave安装
  3. sublime text 如何新建,删除,重命名等问文件的快速操作
  4. Logging with Log4net (二)
  5. 多线程中的锁系统(二)-volatile、Interlocked、ReaderWriterLockSlim
  6. js模块化历程
  7. 台式电脑、笔记本快捷选择Boot(启动项快捷键)大全
  8. Objective-C 外观模式--简单介绍和使用
  9. Android笔记——eclipse快捷键
  10. WCF学习之旅—WCF第二个示例(五)