博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIView.clipsToBounds 让子 View 只显示落在父 View 的 Frame 部分
阅读量:6967 次
发布时间:2019-06-27

本文共 780 字,大约阅读时间需要 2 分钟。

默认情况下,我们向一个 View 中添加一个子 View 时,子 View 的越界部分也会显示出来,当然超过屏幕部分是显示不出来,因为无法在你手上显示内容了。看下面的图:

Unmi clipseToBounds     Unmi clipseToBounds

上图中,橙色的 View 是蓝色 View 的子 View。看左图,由它们的 Frame 设置,橙色的 View 部分超出的蓝色 View 的区域,默认情况下,蓝色 View 超出部分也会显示出来,除非在屏幕之外的部分。

而我们有时候不想要这种行为,希望越界部分不显示出来,像右图所示那盘。比如我们可能期望橙色 View 的动画效果只在它的父 View,即蓝色 View 之内展现。

其实问题很简单,正如标题中所提示的那个 clipToBounds 属性,字面意思是裁减到边界,就是超过父 View 的部分应该被裁减掉,而不显示。

只要设置父 View,即上图中的蓝色的 View 的 clipToBounds 为 YES 即可,默认为 NO.

blueView.clipToBounds = YES;

同时还应该考虑 CALayer 的 maskToBounds 的功能是什么,类似于 clipToBounds 吗?

maskToBounds 是 CALayer 的属性,基于 View  的不少属性其实就是作用于 CALayer 的。立即试验了一下,设置

blueView.layer.maskToBounds = YES 与 blueView.clipToBounds = YES 的效果是一样的,随便设置哪个属性都可。而且设置它们任何一个都会影响到 View 的阴影效果,因为阴影是加在 View 的 Frame 之外的,所以也被裁减去了。

转载于:https://www.cnblogs.com/gaoxiao228/archive/2012/04/18/2455697.html

你可能感兴趣的文章
[转]Oracle ROWNUM用法和分页查询总结
查看>>
【Java面试题】24 sleep() 和 wait() 有什么区别? 详细解析!!!!
查看>>
如何使用指向类的成员函数的指针(详解!)
查看>>
https配置
查看>>
C/C++产生随机数
查看>>
linux下getrlimit与sysconf函数
查看>>
PHP蜘蛛爬虫开发文档
查看>>
情人节到了
查看>>
信息系统开发平台OpenExpressApp - 总体架构的由来
查看>>
Windows 7 下 ORACLE10G安装方法
查看>>
菜鸟编译Linux内核
查看>>
敏友的【敏捷个人】有感(16): 成为一个敏捷的人
查看>>
金山快盘+TortoiseSVN构建版本控制仓库
查看>>
Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析
查看>>
IE浏览器下web调试工具之--IE WebDeveloper介绍
查看>>
交换两个变量值的方法汇总
查看>>
Apache、php、mysql默认安装路径
查看>>
linux下访问ftp服务器和文件传输
查看>>
CentOS下部署java quartz job
查看>>
唐僧、悟空、白骨精的信 悟空你一定Hold住啊
查看>>