iOS手势缩放字体大小

实现在UIWebView通过手势控制字体大小的功能
实现思路: UIPinchGestureRecognizer + js注入

1) 通过NSInteger *fontSize; 记录当前字体放大的比例
2)设置html中user-scale=0
  1. <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">  
在(void)webViewDidFinishLoad:(UIWebView *)webView中注入js代码

NSString *meta = [NSString stringWithFormat:@"var element = document.createElement('meta'); element.name = \"viewport\"; element.content = \"width=device-width,initial-scale=1.0,minimum-scale=0.5,maximum-scale=3,user-scalable=0\"; var head = document.getElementsByTagName('head')[0]; head.appendChild(element);"];
[webView stringByEvaluatingJavaScriptFromString:meta];

3)向webview中添加UIPinchGestureRecognizer
注意:gesture的代理

// 手势
UIPinchGestureRecognizer *gesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(switchFontSize:)];
gesture.delegate = self;
[webView addGestureRecognizer:gesture];
4)完成对应的功能
-(void)switchFontSize:(UIPinchGestureRecognizer *)gesture
{
// NSLog(@"gesture.state=%ld", gesture.state);
// NSLog(@"gesture.scale=%f", gesture.scale);
if(gesture.state==UIGestureRecognizerStateEnded | gesture.state==UIGestureRecognizerStateCancelled){
NSString *js=@"";
if(gesture.scale<1.0){
fontSize<=80?fontSize:(fontSize-=10); // 最小缩放到80%
}else{
fontSize >=200?fontSize:(fontSize+=10); // 最大放大200%
}
js = [NSString stringWithFormat:@"document.body.style.webkitTextSizeAdjust='%d%%'", fontSize];
NSLog(@"js:%@", js);
[self.webView stringByEvaluatingJavaScriptFromString:js];
}
}


参考文献:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值