关于 layer.mask = label.layer 出现空白情况
源代码如下:
self.numLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width/3, 60)];
[self.view addSubview:self.numLabel];
self.numLabel.center = self.view.center;
self.numLabel.textAlignment = NSTextAlignmentCenter;
self.numLabel.font = [UIFont systemFontOfSize:30];
self.numLabel.text = @"53695";
// 创建 CAGradientLayer 对象
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
// 设置 gradientLayer 的 Frame
gradientLayer.frame = CGRectMake(CGRectGetMinX(self.numLabel.frame), CGRectGetMinY(self.numLabel.frame), self.view.frame.size.width/3, 60);
// 创建渐变色数组,需要转换为CGColor颜色
UIColor * red = [UIColor colorWithRed:253/255.0 green:93/255.0 blue:97/255.0 alpha:1.0];
gradientLayer.colors = @[(id)[red colorWithAlphaComponent:0.3].CGColor,
(id)red.CGColor
];
// 设置二种颜色变化点,取值范围 0.0~1.0
gradientLayer.locations = @[@(0.0),@(1.0)];
// 设置渐变颜色方向,左上点为(0,0), 右下点为(1,1)
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1, 0);
// 切成 填充 图形的形状.
[self.view.layer addSublayer:gradientLayer];
gradientLayer.mask = self.numLabel.layer;
这样运行之后会出现空白 label 不见了
这是因为:
1.mask,遮盖的结果是:在被mask的对象上留下mask对象非空白的部分(被mask对象.mask=mask对象;)
这个效果常常配合CAGradientLayer使用做出变色字,也就是动态的上面的效果;
2.mask的核心思想在于:mask对象在这行代码(被mask对象.mask=mask对象;)执行完之后坐标系发生的改变,被假设性的放置在了被mask对象上面,并且frame没有相应的变化,所以导致了用外部的layer直接裁剪会出现空白的情况,当然如果是子layer裁剪那么就一点问题没有;因此,需要在(被mask对象.mask=mask对象;)之后追加一个控制mask对象frame的语句,给它一个位置。(需要注意:mask对象其实是被从自己曾今的父视图或者父layer上被移除了,而且也没到被mask的那个layer上去)。
关于 layer.mask = label.layer 出现空白情况的更多相关文章
- layer.js中layer.tips
<script src="~/Content/js/layer/layer.js"></script> layer.tips('名称不能为空', '#pro ...
- Transport layer and Network layer
http://stackoverflow.com/questions/13333794/networking-difference-between-transport-layer-and-networ ...
- FDO error:Failed to label layer(XXX) for class Default
描述: A column was specified that does not exist. 出现这个问题的原因在于label features 展示的字段不存在或者为空,只要将其勾选去掉或者换个显 ...
- SSL介绍(Secure socket Layer & Security Socket Layer)
一个应用程序的安全需求在很大程度上依赖于将如何使用该应用程序和该应用程序将要保护什么.不过,用现有技术实现强大的. 一般用途的安全通常是可能的.认证就是一个很好的示例. 当顾客想从 Web 站点购买某 ...
- layer 中的 layer.alert layer.msg layer.confirm
1.layer.alert layer.alert('见到你真的很高兴', {icon: 6}); 效果图 layer.alert('墨绿风格,点击确认看深蓝', { skin: 'layui-lay ...
- 【layer】关于layer打开就是最大化的使用
使用layer时候 想在弹出层 在打开的时候默认就是最大值 perContent = layer.open({ type:2, title: userName+nowDate+"的" ...
- layer mobile开发layer.full
Layer For Mobile 之 layer.full() 背景介绍:layer mobile是专门针对手机页面开发的一套框架,具体介绍请看官方文档 http://layer.layui.com/ ...
- GIMP中的新建Layer与更改Layer大小
这边可以直接New Layer,新建一个Layer,还可以New from Visible,第二种是将当前的状态下图像复制出来. 改变Layer的大小,一般的方法两种: Crop to Selecti ...
- 针对于iosAPP内嵌H5,-webit-overflow-scrolling:touch;产生空白情况
问题描述:一个内嵌IOSAPP的H5页面,长页面,大概1.6个屏幕高度,由于有列表滑动起来很不流畅,所以用了-webit-overflow-scrolling:touch;这个只针对ios端的物理滚动 ...
随机推荐
- AtCoDeerくんと選挙速報 / AtCoDeer and Election Report AtCoder - 2140 (按比例扩大)
Problem Statement AtCoDeer the deer is seeing a quick report of election results on TV. Two candidat ...
- 软件工程(GZSD2015) 第二次作业小结
第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...
- SpringBoot使用Filter过滤器处理是否登录的过滤时,用response.sendRedirect()转发报错
1.使用response.sendRedirect("/login")时报错,控制台报错如下: Cannot call sendError() after the response ...
- jQuery 事件绑定
在文档装载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用 bind() 方法来对匹配元素进行特定事件的绑定,bind() 方法的调用格式为:bind( type [, data] , fn ...
- golang函数
一.函数语法 func 函数名(形参列表) (返回值列表){ ...... return 返回值 } 例如: package main import "fmt" func test ...
- Python——设计模式——单例模式
一个类始终只有一个实例 当你第一次实例化这个类的时候,就创建一个实例化得对象 当你之后再来实例化的时候,就用之前创建的对象 class A: __instance = False def __ini_ ...
- luogu P1250 种树
我来总结一下最常用的两种办法 1.贪心 2.差分约束 那么我们先来讲,贪心版<种树> 大家可能知道有一个题和这个类似,那个是钉钉子而这个是种树 我们可以借用钉钉子的思路来想,首先这个是让你 ...
- xadmin后台 导入 excel 功能拓展
新建 excel 文件 在 xadmin 的 plugins 下添加一个 excel.py # _*_ coding:utf-8 _*_ __author__ = "yangtuo" ...
- 探索 Python 学习
Python 是一种敏捷的.动态类型化的.极富表现力的开源编程语言,可以被自由地安装到多种平台上(参阅 参考资料).Python 代码是被解释的.如果您对编辑.构建和执行循环较为熟悉,则 Python ...
- Hadoop基础-镜像文件(fsimage)和编辑日志(edits)
Hadoop基础-镜像文件(fsimage)和编辑日志(edits) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看日志镜像文件(如:fsimage_00000000000 ...