摘要

实现控件圆角的代码时,会不假思索的写 cornerRadiusmasksToBounds,因为搜索得到的设置圆角的代码就是这样。今天突发奇想,为什么要写 masksToBounds

打个比方,设置一个按钮的圆角是 5,我会立马写这两行代码:

btn.layer.cornerRadius = 5
btn.layer.masksToBounds = true

呈现的效果上,是没有任何问题的。但是为什么要设置 masksToBoundstrue 呢?能不写吗?

带着问题,来看一下 masksToBounds 是做什么用的

masksToBounds

看官方解释说 masksToBounds 指示一个可以设置的标识,指定在当前 layer 层的 bounds 区域中的所有子 layer 层是否是被裁剪的。我的理解就是,若设置为 true 那么在这个 layer 层中的子 layer 层超出 bounds 部分就会被裁剪掉

问题来了,**它是怎么实现裁剪的?**继续看苹果官网的解释,巴拉巴拉…看我的理解是这样的:

先上大白话总结,就是如果这个属性设置为 true,那么它就会生成一个 mask 蒙板,在 bounds 区域内的值为 1,超出的部分就是 0。之后呢,就是把mask 蒙板给盖在 layer 上,混合渲染,是 1 的部分就显示原来的,是 0 的部分就空白,这就实现了裁剪效果,因为 mask 包含了设置的圆角,所以在处理的时候,也会把圆角给考虑进去。

接下来看一下 cornerRadius 是做什么用的

cornerRadius

官方解释说设置 layerbackground 四个角处理为圆角的半径

接下来它也说明 cornerRadius 限制,就是仅仅作用到 background(背景) 和边框,layer 中的 contents 不受影响,比如放在它上面的 image

如果想让 cornerRadius 的效果也作用到 contents 上时,就需要设置 masksToBounds 为 true

总结

在显示图片的时候,我也确实要设置 masksToBoundstrue。但是现在看下来,如果要用 masksToBounds 就要明确想要有圆角的 content是属于 layercontents吗? 这个 content 超出了设置圆角后的 bounds吗?

如果两个问题的答案都是 true。那必须就要设置 masksToBoundstrue

那么那些算是属于 layercontents ?等我验证之后给你详细说

题外话

时间仓促,说的东西可能不全面,在你查看的过程中遇到什么问题,评论区给我留言,我会尽快回复

Swift-技巧(五)设置圆角的代码相关推荐

  1. android 微信设置圆角边框代码,Android编程实现圆角边框的方法

    本文实例讲述了Android编程实现圆角边框的方法.分享给大家供大家参考,具体如下: 设置边框圆角可以在drawable-mdpi目录里定义一个xml: android:topRightRadius= ...

  2. php边框圆角,css如何设置圆角边框?css设置圆角边框的方法(图文)

    css如何设置边框?很多时候在开发网页前端的时候,为了让网页上面的东西看起来更加的舒服,我们可能需要设置一些圆角边框比如按钮之类的,那么,我们该怎么来设置圆角边框呢?本篇文章将给大家来介绍一下css设 ...

  3. Android代码动态设置圆角,颜色,线条背景

    开发中平时用到了圆角背景,但是每个圆角背景都不一样,这样还要创建多个xml布局,为了简单快捷,可以使用代码创建圆角背景. 这里以创建矩形圆角背景为例.GradientDrawable.RECTANGL ...

  4. android 代码设置圆角,Android中用Shape实现圆角和局部圆角

    本文讲解如何实现布局边框的部分圆角 大家可能都知道圆角实现其实很简单, 在drawable文件夹下新建xml文件加入以下代码 情景1: 四个角均为圆角 android:shape="rect ...

  5. Swift之UIView设置部分圆角与获取其所在ViewController

    设置部分圆角 实现原理: 可指定设置圆角的位置(左上角.左下角.右下角.右上角) func setCorner(size:CGFloat,roundingCorners:UIRectCorner) { ...

  6. html字体颜色 html中设置字体颜色代码 字体颜色获取

    html字体颜色 html中设置字体颜色代码 字体颜色获取 html字体颜色设置更改,html设置字体颜色代码方法有哪些 DIVCSS5为大家介绍在html中设置字体颜色方法,字体颜色修改方法,字体颜 ...

  7. Android ImageView到底怎么设置圆角图片?背景圆角?控件圆角?图片圆角?占位图圆角?

    前言 在我们实际开发应用的过程中,我想大家或多或少都遇到过需要加载圆角图片的场景,还有一些图片是四周圆角不对称,异性圆角等等情况. 我们可能会去网上或Github上搜索一些RoundImageView ...

  8. Unity2020常用小技巧与设置(建议收藏)

    文章目录 一.前言 二.Unity常用窗口 1.Unity六大窗口 2.Game窗口分辨率设置 3.Scene窗口中3D图标的隐藏 4.摄像机与Scene窗口视角的相互同步 5.Inspector组件 ...

  9. 【响应式Web前端设计】css如何设置边框的圆角样式?border-radius属性设置圆角样式(图 文)

    border-radius包含5种设置圆角样式方式: border-radius :同时设置4个边框的圆角样式. border-top-left-radius :设置左上角边框的圆角样式. borde ...

最新文章

  1. Linux下编译运行C程序
  2. css设置并排,CSS并排排列2个div
  3. gradle镜像配置:使用阿里云仓库服务的代理仓库地址代替jcenter()、mavenCentral()及google()
  4. java finereport_java报表FineReport_JS整理
  5. windows文件中的中文在ubuntu下乱码(小弟参考了许多都不行,这个绝对行啊) .
  6. CDC,CPaintDC,CClientDC,CWindowDC区别
  7. dedeCMS如何进行关键词过滤替换和屏蔽非法词汇?
  8. Java多态提现_Java中的多态的一些体现,重写和包装类
  9. 可串联使用的模10计数器
  10. C调用Python的崩溃
  11. Android 安装腾讯X5内核
  12. UG NX 12 删除草图
  13. ETL数据抽取 全量 增量
  14. 里程碑!美国航天局NASA耗资高达百亿美元,“终极太空望远镜”拍到了什么?| 美通社头条...
  15. Mybatis事务管理的两种方式
  16. GPS从入门到放弃(一) --- GPS基础原理
  17. 计算机主机usb插口松,台式电脑音频接口坏了or接触不良?用这两个方法轻松解决,还不需要花什么钱...
  18. 批处理(bat)打开之后闪退怎么办?
  19. 用html设计一个时间距离查询,使用HTML5 Geolocation实现一个距离追踪器
  20. iOS使用libxlsxwriter导出excel文件

热门文章

  1. Apache 502 Bad Gateway
  2. 服务器内存延迟,内存、延迟等性能全面测试
  3. python 加速下载
  4. 解决curl/wget: (7) Failed to connect to github.com port 443: Connection refused无法解析主机或请求拒绝问题
  5. linux处理僵尸进程
  6. 各阶段产品经理突破自身瓶颈总结(建议收藏)
  7. 无法更改edge浏览器启动页(主页)\新标签页
  8. 题解 修改字符串 DDP基础题
  9. setTimeout开始,暂停,停止功能
  10. LINUX去掉“哔哔叫”的方法