UILabel简单高效实现圆角的方式
需求
我们会经常遇到这样一个需求,给TableViewCell添加标签,例如:饿了么App中店铺会有,减、特、新等标签,这些标签一般都是用UILabel控件实现,UILabel中设置text,textColor,backgroundColor,以及cornerRadius。
)
问题
这个需求要求我们做圆角,业界也有很多做圆角的方式,最简单的就是设置label.layer.cornerRadius = 2; label.layer.masksToBounds = YES; 但是这样做(label.layer.cornerRadius > 0 && label.layer.masksToBounds = YES)会出现离屏渲染,对于页面中只有少量需要做圆角,也不会造成卡顿,但是如果是每个TableViewCell设置一些圆角,就会使列表滑动起来有明显卡顿。
解决方法
业界对于圆角优化很多方式,大家可以搜一下相关文章。本文只针对UILabel的cornerRadius方式进行讲解。先说一下cornerRadius属性,它是影响layer显示的backgroundColor和border,对layer的contents不起作用。
- 对于不需要设置label的backgroundColor,只设置borderWidth、borderColor的label,直接设置cornerRadius,不需要设置masksToBounds = YES,就可以实现圆角功能。
- 对于需要同时设置label的backgroundColor时,直接设置cornerRadius是不能正常显示圆角的,原因是:UILabel设置backgroundColor的行为,不再是设定layer的背景色而是为contents设置背景色。所以解决方式是我们不去设置label的backgroundColor,而是直接设置label.layer.backgroundColor,这样就可以实现单独设置cornerRadius,显示圆角的效果。代码:
UILabel *tagLabel = [UILabel new];
tagLabel.text = @"减";
tagLabel.textColor = [UIColor whiteColor];
tagLabel.font = [UIFont systemFontOfSize:12];
tagLabel.layer.backgroundColor = [UIColor greenColor].CGColor;
tagLabel.layer.cornerRadius = 2;
复制代码
参考文章:iOS设置圆角的四种方法
UILabel简单高效实现圆角的方式相关推荐
- RPC框架——简单高效hessian的使用方式
RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成&qu ...
- 免费简单高效的下载工具
最近有朋友私聊我: 有可以下载所有音乐工具吗? 有可以下载百度文库工具吗? 这些确实是大家经常遇到的问题,因为很多都需要会员,但是自己只是偶尔遇到,开个会员又太浪费了.经过这几天的整理,我找到了相关的 ...
- HiLink LiteOS IoT芯片 让IoT开发简单高效
HiLink & LiteOS & IoT芯片 让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手 ...
- 虚拟化---简单高效的IT管理模型
很多人认为云计算就是虚拟化,虚拟化就是云计算.笔者虽然并不认同这个观点,但绝对赞同虚拟化技术在云计算众多关键技术中有一席之地,而且是非常重要的关键技术. 维基百科对虚拟化的定义是:虚拟化是表示计算机资 ...
- NeurIPS 2020 | 一种基于动作采样的简单高效的正则化强化学习方法
编者按:现有的强化学习方法通常通过熵正则化的方式控制最优策略的随机性,以保证训练过程中的良好探索以及目标策略的鲁棒性.然而,熵正则化的强化学习方法通常会面临表达能力有限的策略结构和复杂低效的训练过程之 ...
- 高效的数据压缩编码方式 Protobuf
高效的数据压缩编码方式 Protobuf github地址 目录 ProtocolBuffers 是什么 为什么要发明 ProtocolBuffers proto3 定义 Message 分配字段编号 ...
- 论文浅尝|简单高效的知识图谱表示学习负样本采样方法
笔记整理 | 陈名杨,浙江大学在读博士生,主要研究方向为知识图谱表示学习 Introduction 研究知识图谱表示学习(KnowledgeGraph Embedding)可以解决当前很多应用的基本问 ...
- php 高效缓存类,简单高效的文件缓存php类
简单高效的文件缓存php类 class FileCache { public $keyPrefix = ''; public $cachePath = ''; public $cacheFileSuf ...
- 【Flink】Apache Flink 1.13.0 正式发布,流处理应用更加简单高效
1.概述 转载:Apache Flink 1.13.0 正式发布,流处理应用更加简单高效 侵权可删,这里是做个笔记,防止找不到. Flink 1.13 发布了!Flink 1.13 包括了超过 200 ...
最新文章
- 使用malloc创建头结点的坑
- 本地方法(JNI)——访问数组元素+错误处理
- python程序执行时间_用于在Python中查找程序执行时间的程序
- CSS基础「七」精灵图 \ 字体图标 \ 三角 \ 用户界面样式 \ 页面初始化
- bat文件如何获取输入内容并写入文件
- 数据密集型应用系统设计--数据分区
- python-《Python发展前景》
- rasa 中文 UnsupportedLanguageError: component ‘LanguageModelTokenizer‘ does not support language ‘zh‘.
- 如何轻松搞定SAP HANA数据库备份?
- 【入门书籍】新手入门机器学习,强烈推荐这几本书籍
- 中文转unicode编码英文不转
- html js 导出excel文件怎么打开文件,js导出excel文件的简洁方法(推荐)
- android 3d地球,动态3D我的地球app
- linux命令不断更新
- 0x80004005是什么错误?0x80004005的解决方案
- 计算机傅里叶什么知识美颜,傅里叶变换是用来做什么的,具体举例一下应用?...
- 科学家发明创可贴式MP3靠人体热量工作
- c语言编文曲星游戏,关于汉诺塔游戏的思路(就是最早文曲星上移盘子的那个)...
- r5 5600g和5600x的区别 选哪个好
- java arraylist 求和_java-ArrayList中类对象属性的总和