UIWebView的一些使用技巧(手势缩放字体、先加载文本再load图片、实现@变色的UITextView等)
来源:互联网 发布:数据新闻手册pdf 下载 编辑:程序博客网 时间:2024/05/16 04:03
1.屏蔽UIWebView的手势缩放效果
这个在iOS端这边不好做,可以在返回的html头中添加一行
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">
2.UIWebView使用loadHTMLString方式加载
[_webContent loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:fileURL]];用这种方式加载webview时,html文件没有实体,所以做文件的相对引用就不好处理(例如 js、css、img)
baseURL所指向的目录可以认为是 该html页面所在路径,加入其他资源文件(例如 js、css、img)都放在baseURL所指向的目录,那么在htmlString中就可以直接用文件名引用这些文件
3.UIWebView运行js
使用webview的时候,能灵活使用js能做出很多效果
例如:
3.1 给webview添加 缩放手势-即时改变页面字体大小
参考1中先将webview默认的手势屏蔽掉
fontSizeScaleRate = 1.0; UIPinchGestureRecognizer *gesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(switchFontSize:)]; [_webContent addGestureRecognizer:gesture]; [gesture release];- (void)switchFontSize:(UIPinchGestureRecognizer *)gesture{ if (gesture.state==UIGestureRecognizerStateEnded | gesture.state==UIGestureRecognizerStateCancelled) { NSString *js = @""; if (gesture.scale<1.0) { fontSizeScaleRate<=0.8?fontSizeScaleRate:(fontSizeScaleRate -= 0.1); js = [NSString stringWithFormat:@"document.body.style.fontSize = \"%.0f",fontSizeScaleRate*100]; } else { fontSizeScaleRate>=1.2?fontSizeScaleRate:(fontSizeScaleRate += 0.1); js = [NSString stringWithFormat:@"document.body.style.fontSize = \"%.0f",fontSizeScaleRate*100]; } js = [js stringByAppendingString:@"%\";"]; [_webContent stringByEvaluatingJavaScriptFromString:js]; } }
3.2 html页面中的图片先使用默认图片,同时loading图片,图片load完毕,替换默认图片
这个需要iOS和js结合处理,当然使用iOS的消息通知也可以做出这个,但是判断会比较麻烦,如果直接使用js就很简单,js端代码如下:
var tryTimes = 0;var maxTryTimes = 6;function replaceImageDomUseDefault () { if (tryTimes==0) { imageParentNodeStyleFilter(); } if (tryTimes>=maxTryTimes) { return; } var imageDoms = document.getElementsByTagName("img"); for (var i = 0; i<imageDoms.length; i++) { var imageDom = imageDoms[i]; imageHandler(imageDom); } tryTimes++; setTimeout(arguments.callee, 1000);}// 去掉图片的首行缩进function imageParentNodeStyleFilter() { var imageDoms = document.getElementsByTagName("img"); for (var i = 0; i<imageDoms.length; i++) { var imageDom = imageDoms[i]; if(imageDom.parentNode) { var parentDom = imageDom.parentNode; parentDom.style.textIndent = 0; } }}function imageHandler (imageDom) { if(isValidPic(imageDom)) { imageDom.src = imageDom.getAttribute("_src"); return; }}//判断img元素dom是否为合法图片function isValidPic(dom){ var img = new Image(); img.src = dom.getAttribute("_src"); if(img.width > 0 && img.height > 0){ return true; } return false;}
3.3使用webview做一个假的UITextView 能有多种字体颜色的
在很多评论中都有@功能,@user 需要高亮显示,当然这个习惯iOS开发的第一反应应该都是想到coretext,用webview应该更快一点(如果你不是很熟悉coretext)
实现思路大致如下:再UITextView上面覆盖一个UIWebview,将UITextView中的文本即时load到webview中,在load之前先匹配出@user 给他加一个 高亮的字体样式
前提:我这里在 @user 前后各有一个空格
- (NSString *)getHTMLString:(NSString *)textFieldString{ NSString *htmlContent = @"<!DOCTYPE HTML><html><body style=\"background-color:rgb(240,240,240);word-break:break-all\" >"; NSString *filterResult = [textFieldString copy]; NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:@" @[^ ]+ " options:NSRegularExpressionCaseInsensitive error:nil]; NSArray *matchs = [regExp matchesInString:textFieldString options:0 range:NSMakeRange(0, textFieldString.length)]; for (int i = 0; i<[matchs count]; i++) { NSTextCheckingResult *match = [matchs objectAtIndex:i]; NSString *matchedString = [textFieldString substringWithRange:[match range]]; NSString *replacedString = [NSString stringWithFormat:@"<span style=\"color:rgb(73,141,203)\">%@</span>",matchedString]; filterResult = [filterResult stringByReplacingOccurrencesOfString:matchedString withString:replacedString]; } htmlContent = [htmlContent stringByAppendingString:filterResult]; htmlContent = [htmlContent stringByAppendingString:@"</body></html>"]; return htmlContent;}
- UIWebView的一些使用技巧(手势缩放字体、先加载文本再load图片、实现@变色的UITextView等)
- UITextView的一些使用技巧
- [iOS]手势操作实现图片的缩放
- UITextView的一些技巧
- UITextView的一些技巧
- 187,使用手势控制图片的缩放
- 使用UITextView的dataDetectorTypes实现超链接,及uiwebview的dataDetectorTypes
- 使用手势缩放文本
- Picasso图片加载框架的使用及加载网络图片等比例缩放
- IOS的UITextField,UIButton,UIWebView的一些属性介绍和IOS图片资源的使用技巧
- 实现fresco的DraweeView的图片手势缩放
- css 实现图片的等比例缩放
- UIWebView的使用技巧
- viewPager+photoView实现图片轮播和手势缩放功能 支持手势缩放的imageView 如何实现相册左右滑动和手势缩放 如何让图片自适应控件大小 photoView如何使用(上)
- 【WebView加载本地资源图片 字体等】一些不常用的用法集合
- iOS中使用UITextView时候的一些小技巧
- uiwebview加载图片的问题
- 使用lazy load延迟图片的加载
- hdu 4565 公式推导+矩阵快速幂
- C# Linq扩展方法应用
- 机器周期,指令周期,时钟周期,节拍与晶振 以及STM32外接RTC失振
- Android 第三方 UI 库 GreenDroid 使用方法
- ABAP--如何快速从BSEG读取数据
- UIWebView的一些使用技巧(手势缩放字体、先加载文本再load图片、实现@变色的UITextView等)
- 301跳转代码全集(ASP|PHP|JSP|.NET)
- 【现代操作系统】第4章 存储管理
- .NET-C#超文本编辑器FreeTextBox使用
- poj 3013 Big Christmas Tree(最短路问题)
- 技巧-使用翻转效果
- Linq 如何实现 in 与 not in
- UVA 11426 - GCD - Extreme (II) (数论)
- linux下常用的一些函数