学习新UI(CAGradientLayer)和问题解决

学习新UI

CAGradientLayer

CAGradientLayer是CALyer的一个子类,专门用来实现渐变色的layer。
CAGradientLayer有5个属性:

1
2
3
4
5
@property(nullable, copy) NSArray *colors; // CGColorRef数组,用来定义渐变节点颜色
@property(nullable, copy) NSArray<NSNumber *> *locations; // 存储每个渐变节点位置
@property CGPoint startPoint; // 渐变色的起始点
@property CGPoint endPoint; // 渐变色的结束点,和起始点共同能够成渐变方向
@property(copy) NSString *type; // 没什么意义,只能设置为axial

CAGradientLayer具体使用方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
![02713e99fd85dee397e7227df3c5e088.png](evernotecid://957019EE-0091-4BC7-BF81-0E76975CADE1/appyinxiangcom/16246444/ENResource/p423)

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.startPoint = CGPointMake(0, 0);
gradient.endPoint = CGPointMake(1, 1);
gradient.locations = @[@0.3, @0.5, @0.6];
gradient.colors = [NSArray arrayWithObjects:
(id)[UIColor redColor].CGColor,
(id)[UIColor greenColor].CGColor,
(id)[UIColor blueColor].CGColor,
nil];

399249B2-84D0-4BF0-ABD5-9B6AA587E424

问题修改

今天再做用按钮单选给tableCell时出现了很奇特的问题,我在单选是老是出现选中后其他会高亮的bug,这是我百思不得其解

QQ20190718-175405-HD

单选逻辑很简单不是哪里的问题,后来我才想起来,我给每个cell的imageView加了渐变色CAGradientLayer,这是个layer的子类,我单选是刷新表单的方法,但是刷新是渐变色CAGradientLayer这个子类是需要移除的,不然会一直存在。就会出现上面这个问题,移除方法在如下。

1
[self.m_imageViewBG.layer.sublayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
-------------本文结束感谢您的阅读-------------