1.核心代码,找到电话号码的位置

#pragma mark-<获取电话号码的坐标>
+ (CGRect)boundingRectForCharacterRange:(NSRange)range andLable:(UILabel *)lable lableSize:(CGSize)lableSize{
//    NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:contentStr];
//    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
//    paraStyle.lineSpacing = 6;
//    NSDictionary *attrs =@{NSFontAttributeName : [UIFont systemFontOfSize:12.0], NSParagraphStyleAttributeName : paraStyle};
//    [attributeString setAttributes:attrs range:NSMakeRange(0, contentStr.length)];NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:lable.attributedText];NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];[textStorage addLayoutManager:layoutManager];NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:lableSize];textContainer.lineFragmentPadding = 0;[layoutManager addTextContainer:textContainer];NSRange glyphRange;[layoutManager characterRangeForGlyphRange:range actualGlyphRange:&glyphRange];CGRect rect = [layoutManager boundingRectForGlyphRange:glyphRange inTextContainer:textContainer];
//    CGFloat yOfset =  rect.origin.y;
//    rect.origin.y = yOfset + 3;return rect;
}

2.用法示例

{   // 添加拨打电话

self.tipsLabel.userInteractionEnabled = YES;

[self.view layoutIfNeeded];

NSRange range = [_tipsLabel.text rangeOfString:@"4006668800"];

UIControl *phoneControl = [[UIControl alloc] initWithFrame:[ZYTools boundingRectForCharacterRange:range andLable:self.tipsLabel lableSize:self.tipsLabel.frame.size]];

phoneControl.tag = 1234;

[phoneControl addTarget:self action:@selector(phoneLink) forControlEvents:UIControlEventTouchUpInside];

[_tipsLabel addSubview:phoneControl];

}

#pragma mark-点击拨打电话

- (void)phoneLink{

NSString *str = [NSString stringWithFormat:@"tel:%@",CustomerServiceTelephone];

dispatch_async(dispatch_get_main_queue(), ^(){

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

});

}

3.注意label的attributedText一定要设置字体大小

- (UILabel *)tipsLabel

{

if (!_tipsLabel) {

_tipsLabel = [[UILabel alloc] init];

_tipsLabel.text = @"1、请输入正确的运营商服务密码,如果忘记请点击\"忘记密码\"\n2、运营商认证需要2-3分钟,请耐心等待\n3、如果重置密码失败,请拨打客服热线:4006668800";

_tipsLabel.font = UIFONT_12;

_tipsLabel.numberOfLines = 0;

_tipsLabel.textColor = colorWith(@"#939ca5");

_tipsLabel.textAlignment = NSTextAlignmentLeft;

NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];

paraStyle.lineSpacing = 6;

NSDictionary *dict = @{NSParagraphStyleAttributeName : paraStyle};

NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:_tipsLabel.text attributes:dict];

NSRange range = [_tipsLabel.text rangeOfString:@"4006668800"];

[attr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#FB6F5C"] range:range];

[attr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12.0] range:NSMakeRange(0, _tipsLabel.text.length)];

_tipsLabel.attributedText = attr;

}

return _tipsLabel;

}

ios lable中电话号码点击拨打电话相关推荐

  1. 【uniapp】微信小程序中实现点击拨打电话的功能

     手机端运行会直接调起电话按钮,代码如下: <view class="text2_button" @click="freeTell"><tex ...

  2. html5页面拨打电话,5.添加页面/设置点击拨打电话

    1.新增页面.新建的作品里默认是两页,这时候制作第三页需要我们自己新建.这与PPT有些类似,在第二页页面上右击,点击新增空白页: 2.第三页新建的画布. 3.素材上传/摆放/设置动画及播放次序.上两节 ...

  3. html实现点击拨打电话功能

    html实现点击拨打电话功能 1.代码 <!-- 联系客服 --> <div class="tel"><img src="./img/tel ...

  4. 微信小程序点击拨打电话

    效果图: 需求:点击文字然后拨打电话 为防止这个功能会在多个地方使用,我们可以创建一个components. 1.在顶级目录下建立一个components文件夹,在这个文件夹下再建立一个文件夹,例如叫 ...

  5. APP中H5页面实现拨打电话功能

    萨瓦迪卡,欢迎大家~~ <a href="tel:400-0000-000">400-0000-000</a>//如失效,就在head标签里加上<me ...

  6. android指定sim卡拨号,使用双SIM卡设备中的指定SIM拨打电话

    过去几天我一直在寻找这个,我开始知道: "开箱即用的Android不支持双SIM卡.这是制造商的自定义修改,并且没有公共API来控制它." 下面的链接提供了一个解决方案,但它不能在 ...

  7. 移动端点击拨打电话功能

    移动端 vue项目 拨打电话 1.获取到的手机号码,调用拨打电话方法callPhone 2.拨打电话方法callPhone 荣耀手机(不知道能不能代替安卓机):点击直接跳转拨打电话页面: iphone ...

  8. uniapp点击拨打电话

    最近用uniapp做微信小程序,有个通讯录功能,需要调用手机拨打电话,如下所示: <view class="action" @click="phone(inform ...

  9. html双击回顶部,百度/微信小程序点击按钮回到顶部(scrollTop=0)/点击拨打电话...

    一.HTML部分 二.JS部分页面滚动回到顶部 1.监听页面滚动事件 onPageScroll(e) { // console.log(e.scrollTop) if (e.scrollTop > ...

最新文章

  1. creo导入特征怎么实体化_Creo/Proe云图抄数牙刷抄数造型
  2. Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
  3. 华为云网络覆盖全球2500+站点,打造高品质、低成本接入体验
  4. day12-nginx
  5. java 信息增益_对信息增益(IG,Information Gain)的理解和计算
  6. synchronized原理_synchronized 底层原理与内存屏障
  7. AVEVA软件编程是C语言么,AVEVA PDMS 三维文字工具
  8. [Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏
  9. [Java] 1006. Sign In and Sign Out (25)-PAT甲级
  10. AARRR:数据运营模型
  11. Asp.net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用...
  12. 基于vue和springboot的物流仓储管理系统
  13. 关于STM32红外遥控器的研究与分析
  14. 想请问下PDF双面打印时(打印机自动双面打印)为什么反面那页的内容是倒过来的,应该怎么设置?...
  15. 知识图谱构建技术综述与实践
  16. 有关“十二生肖”的成语
  17. 课堂派(SpringBoot+Vue)
  18. 华为第十届 关灯计划
  19. iOS - 微信分享无法显示好友列表
  20. stm32控制半导体制冷器实现饮水机保温制冷功能

热门文章

  1. 2020年黄历表_2020黄历查询(2020年老黄历表)
  2. php前端开发是什么,前端开发是什么?前端开发是什么意思
  3. 鸿蒙中国壁纸高清全面屏,华为鸿蒙新机来袭:几乎100%全面屏+麒麟980+4500mAh 这才是华为...
  4. 关于信息安全和安全漏洞的一些科普——从支付宝控件漏洞谈起
  5. 什么是 Schottky diode
  6. 问题 - vmd_ei_api更新供应商主数据时未标记字段被覆盖
  7. MVC框架实现用户登录注册功能(连接数据库)
  8. 原深发展总行行长、平安银行原董事长肖遂宁挂帅太合汇资本
  9. Excel表格中“平方、立方”单位如何正确输入
  10. 优先处理我的问题,帮我编写获取双色球中奖号码的历史数据的python代码