Swift-技巧(五)设置圆角的代码
摘要
实现控件圆角的代码时,会不假思索的写
cornerRadius
和masksToBounds
,因为搜索得到的设置圆角的代码就是这样。今天突发奇想,为什么要写masksToBounds
?
打个比方,设置一个按钮的圆角是 5,我会立马写这两行代码:
btn.layer.cornerRadius = 5
btn.layer.masksToBounds = true
呈现的效果上,是没有任何问题的。但是为什么要设置 masksToBounds
为 true
呢?能不写吗?
带着问题,来看一下 masksToBounds
是做什么用的。
masksToBounds
看官方解释说 masksToBounds
指示一个可以设置的标识,指定在当前 layer
层的 bounds
区域中的所有子 layer
层是否是被裁剪的。我的理解就是,若设置为 true
那么在这个 layer
层中的子 layer
层超出 bounds
部分就会被裁剪掉。
问题来了,**它是怎么实现裁剪的?**继续看苹果官网的解释,巴拉巴拉…看我的理解是这样的:
先上大白话总结,就是如果这个属性设置为 true,那么它就会生成一个 mask 蒙板,在 bounds 区域内的值为 1,超出的部分就是 0。之后呢,就是把mask 蒙板给盖在 layer
上,混合渲染,是 1 的部分就显示原来的,是 0 的部分就空白,这就实现了裁剪效果,因为 mask 包含了设置的圆角,所以在处理的时候,也会把圆角给考虑进去。
接下来看一下 cornerRadius
是做什么用的。
cornerRadius
官方解释说设置 layer
的 background
四个角处理为圆角的半径。
接下来它也说明 cornerRadius
限制,就是仅仅作用到 background
(背景) 和边框,layer
中的 contents
不受影响,比如放在它上面的 image
。
如果想让 cornerRadius
的效果也作用到 contents
上时,就需要设置 masksToBounds
为 true。
总结
在显示图片的时候,我也确实要设置 masksToBounds
为 true
。但是现在看下来,如果要用 masksToBounds
就要明确想要有圆角的 content
是属于 layer
的 contents
吗? 这个 content
超出了设置圆角后的 bounds
吗?
如果两个问题的答案都是 true
。那必须就要设置 masksToBounds
为 true
。
那么那些算是属于 layer
的 contents
?等我验证之后给你详细说
题外话
时间仓促,说的东西可能不全面,在你查看的过程中遇到什么问题,评论区给我留言,我会尽快回复
Swift-技巧(五)设置圆角的代码相关推荐
- android 微信设置圆角边框代码,Android编程实现圆角边框的方法
本文实例讲述了Android编程实现圆角边框的方法.分享给大家供大家参考,具体如下: 设置边框圆角可以在drawable-mdpi目录里定义一个xml: android:topRightRadius= ...
- php边框圆角,css如何设置圆角边框?css设置圆角边框的方法(图文)
css如何设置边框?很多时候在开发网页前端的时候,为了让网页上面的东西看起来更加的舒服,我们可能需要设置一些圆角边框比如按钮之类的,那么,我们该怎么来设置圆角边框呢?本篇文章将给大家来介绍一下css设 ...
- Android代码动态设置圆角,颜色,线条背景
开发中平时用到了圆角背景,但是每个圆角背景都不一样,这样还要创建多个xml布局,为了简单快捷,可以使用代码创建圆角背景. 这里以创建矩形圆角背景为例.GradientDrawable.RECTANGL ...
- android 代码设置圆角,Android中用Shape实现圆角和局部圆角
本文讲解如何实现布局边框的部分圆角 大家可能都知道圆角实现其实很简单, 在drawable文件夹下新建xml文件加入以下代码 情景1: 四个角均为圆角 android:shape="rect ...
- Swift之UIView设置部分圆角与获取其所在ViewController
设置部分圆角 实现原理: 可指定设置圆角的位置(左上角.左下角.右下角.右上角) func setCorner(size:CGFloat,roundingCorners:UIRectCorner) { ...
- html字体颜色 html中设置字体颜色代码 字体颜色获取
html字体颜色 html中设置字体颜色代码 字体颜色获取 html字体颜色设置更改,html设置字体颜色代码方法有哪些 DIVCSS5为大家介绍在html中设置字体颜色方法,字体颜色修改方法,字体颜 ...
- Android ImageView到底怎么设置圆角图片?背景圆角?控件圆角?图片圆角?占位图圆角?
前言 在我们实际开发应用的过程中,我想大家或多或少都遇到过需要加载圆角图片的场景,还有一些图片是四周圆角不对称,异性圆角等等情况. 我们可能会去网上或Github上搜索一些RoundImageView ...
- Unity2020常用小技巧与设置(建议收藏)
文章目录 一.前言 二.Unity常用窗口 1.Unity六大窗口 2.Game窗口分辨率设置 3.Scene窗口中3D图标的隐藏 4.摄像机与Scene窗口视角的相互同步 5.Inspector组件 ...
- 【响应式Web前端设计】css如何设置边框的圆角样式?border-radius属性设置圆角样式(图 文)
border-radius包含5种设置圆角样式方式: border-radius :同时设置4个边框的圆角样式. border-top-left-radius :设置左上角边框的圆角样式. borde ...
最新文章
- Linux下编译运行C程序
- css设置并排,CSS并排排列2个div
- gradle镜像配置:使用阿里云仓库服务的代理仓库地址代替jcenter()、mavenCentral()及google()
- java finereport_java报表FineReport_JS整理
- windows文件中的中文在ubuntu下乱码(小弟参考了许多都不行,这个绝对行啊) .
- CDC,CPaintDC,CClientDC,CWindowDC区别
- dedeCMS如何进行关键词过滤替换和屏蔽非法词汇?
- Java多态提现_Java中的多态的一些体现,重写和包装类
- 可串联使用的模10计数器
- C调用Python的崩溃
- Android 安装腾讯X5内核
- UG NX 12 删除草图
- ETL数据抽取 全量 增量
- 里程碑!美国航天局NASA耗资高达百亿美元,“终极太空望远镜”拍到了什么?| 美通社头条...
- Mybatis事务管理的两种方式
- GPS从入门到放弃(一) --- GPS基础原理
- 计算机主机usb插口松,台式电脑音频接口坏了or接触不良?用这两个方法轻松解决,还不需要花什么钱...
- 批处理(bat)打开之后闪退怎么办?
- 用html设计一个时间距离查询,使用HTML5 Geolocation实现一个距离追踪器
- iOS使用libxlsxwriter导出excel文件
热门文章
- Apache 502 Bad Gateway
- 服务器内存延迟,内存、延迟等性能全面测试
- python 加速下载
- 解决curl/wget: (7) Failed to connect to github.com port 443: Connection refused无法解析主机或请求拒绝问题
- linux处理僵尸进程
- 各阶段产品经理突破自身瓶颈总结(建议收藏)
- 无法更改edge浏览器启动页(主页)\新标签页
- 题解 修改字符串 DDP基础题
- setTimeout开始,暂停,停止功能
- LINUX去掉“哔哔叫”的方法