关于 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端的物理滚动 ...
随机推荐
- C语言之控制语言:分支和跳转
if语句 #include<stdio.h> int main(void) { const int FREEZING = 0; float temperature; int cold_da ...
- OpenStack-Nova(4)
一. Nova概述 使用OpenStack Compute来托管和管理云计算系统.OpenStack Compute是基础架构即服务(IaaS)系统的主要部分.主要模块在Python中实现. Open ...
- 一段c++代码实现睡眠功能
#ifdef ACL_UNIX struct timeval tv; tv.tv_sec = delay / 1000; tv.tv_usec = (suseconds_t) (delay - tv. ...
- CodeForces 280B Maximum Xor Se
题目链接:http://codeforces.com/contest/280/problem/B 题目大意: 给定一个由n个数组成的一个序列,s[l..r] (1 ≤ l < r ≤ n)代表原 ...
- Djangon
2.怎么样从浏览器获得用户输入的数据? request.浏览器的八种申请方式.get(条件) request.浏览器的八种申请方式[] request.浏览器的八种申请方式(这里什么也不要写)> ...
- 进程Process之join、daemon(守护)、terminate(关闭)、multiprocessing之锁、信号量和事件
一.Process 参数介绍: 1 group参数未使用,值始终为None 2 target表示调用对象,即子进程要执行的任务 3 args表示调用对象的位置参数元组,args=(1,2,'a',) ...
- sql 找出不包含字母、不包含汉字的数据
--1.不包含字母 SELECT * FROM t WHERE str NOT LIKE '%[a-zA-Z]%' SELECT * FROM t --2.不包含汉字 SELECT * FROM t ...
- PHP——模糊匹配文件|目录
内置函数 glob函数 详解 http://www.w3school.com.cn/php/func_filesystem_glob.asp
- Django------多表操作
一. 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的 ...
- 【XSY3042】石像 拓扑排序 状压DP 洲阁筛
题目大意 有 \(n\) 个整数 \(a_1,a_2,\ldots,a_n\),每个数的范围是 \([1,m]\).还有 \(k\) 个限制,每个限制 \(x_i,y_i\) 表示 \(a_{x_i} ...