博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改UIView的默认Layer后,修改View的值会动态修改Layer的值
阅读量:5827 次
发布时间:2019-06-18

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

修改UIView的默认Layer后,修改View的值会动态修改Layer的值

效果图:

如上图所示,当我们修改了一个UIView的子类中的Layer内置类型时(如上图中我们将CALayer直接替换成了CAGradientLayer类),会直接作用到其内置的Layer当中.

我们可以用这个特性将Layer封装到View当中,然后直接修改view就能达到我们想要实现的目的.

源码:

////  AlphaView.h//  YXMWeather////  Created by XianMingYou on 15/2/20.//  Copyright (c) 2015年 XianMingYou. All rights reserved.//#import 
@interface AlphaView : UIView@property (nonatomic, strong) NSArray *colors;@property (nonatomic, strong) NSArray *locations;@property (nonatomic) CGPoint startPoint;@property (nonatomic) CGPoint endPoint;- (void)alphaType;@end
////  AlphaView.m//  YXMWeather////  Created by XianMingYou on 15/2/20.//  Copyright (c) 2015年 XianMingYou. All rights reserved.//#import "AlphaView.h"@interface AlphaView (){    CAGradientLayer   *_gradientLayer;}@end@implementation AlphaView/** *  修改当前view的backupLayer为CAGradientLayer * *  @return CAGradientLayer类名字 */+ (Class)layerClass {    return [CAGradientLayer class];}- (instancetype)initWithFrame:(CGRect)frame {    self = [super initWithFrame:frame];    if (self) {        _gradientLayer = (CAGradientLayer *)self.layer;    }    return self;}- (void)alphaType {    self.colors     = @[[UIColor clearColor], [UIColor blackColor], [UIColor clearColor]];    self.locations  = @[@(0.25), @(0.5), @(0.75)];    self.startPoint = CGPointMake(0, 0);    self.endPoint   = CGPointMake(1, 0);}/** *  重写setter,getter方法 */@synthesize colors = _colors;- (void)setColors:(NSArray *)colors {    _colors = colors;        // 将color转换成CGColor    NSMutableArray *cgColors = [NSMutableArray array];    for (UIColor *tmp in colors) {        id cgColor = (__bridge id)tmp.CGColor;        [cgColors addObject:cgColor];    }        // 设置Colors    _gradientLayer.colors = cgColors;}- (NSArray *)colors {    return _colors;}@synthesize locations = _locations;- (void)setLocations:(NSArray *)locations {    _locations = locations;    _gradientLayer.locations = _locations;}- (NSArray *)locations {    return _locations;}@synthesize startPoint = _startPoint;- (void)setStartPoint:(CGPoint)startPoint {    _startPoint = startPoint;    _gradientLayer.startPoint = startPoint;}- (CGPoint)startPoint {    return _startPoint;}@synthesize endPoint = _endPoint;- (void)setEndPoint:(CGPoint)endPoint {    _endPoint = endPoint;    _gradientLayer.endPoint = endPoint;}- (CGPoint)endPoint {    return _endPoint;}@end

 

转载地址:http://xpadx.baihongyu.com/

你可能感兴趣的文章
各种非算法模板
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
ubuntu 修改hostname
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
查看>>
ZAB与Paxos算法的联系与区别
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
微软职位内部推荐-Sr DEV
查看>>