CALayer Mask - 4 - CAGradientLayer

分享两个例子:

http://www.jianshu.com/p/21f2b09d5445

先实现倒影再渐变

#import "LBCAGradientLayerViewController.h"

@interface LBCAGradientLayerViewController ()

@end

@implementation LBCAGradientLayerViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    
    [[self.view layer] setBackgroundColor:[UIColor blackColor].CGColor];
    
    UIImage* ballon = [UIImage imageNamed:@"luffy.jpg"];
    
    CALayer* topLayer = [CALayer layer];
    [topLayer setBounds:CGRectMake(0, 0, 320, 240)];
    [topLayer setPosition:CGPointMake(160.0f, 120.0f)];
    [topLayer setContents:(id)[ballon CGImage]];
    
    [[[self view] layer]addSublayer: topLayer];
    
    
    CALayer* reflectionLayer = [CALayer layer];
    [reflectionLayer setBounds:CGRectMake(0, 0, 320, 240)];
    [reflectionLayer setPosition:CGPointMake(158.0f, 362.0f)];
    [reflectionLayer setContents:[topLayer contents]];

    [reflectionLayer setValue:DegreesToNumber(180.0f) forKeyPath:@"transform.rotation.x"];

    
    CAGradientLayer* gradientLayer = [CAGradientLayer layer];
    [gradientLayer setBounds:[reflectionLayer bounds]];
    [gradientLayer setPosition:CGPointMake([reflectionLayer bounds].size.width/2, [reflectionLayer bounds].size.height/2)];
    [gradientLayer setColors:[NSArray arrayWithObjects: (id)[[UIColor clearColor] CGColor],
                                                        (id)[[UIColor blackColor]CGColor], nil]];
    
    [gradientLayer setStartPoint:CGPointMake(0.5,0.35)];
    [gradientLayer setEndPoint:CGPointMake(0.5,1.0)];

    [reflectionLayer setMask:gradientLayer];

    [[[self view] layer]addSublayer:reflectionLayer];
}


NSNumber* DegreesToNumber(CGFloat degrees)
{
    return [NSNumber numberWithFloat: DegreesToRadians(degrees)];
}

CGFloat DegreesToRadians(CGFloat degrees) {
    return degrees * M_PI / 180;}

@end



http://blog.it985.com/7986.html

随机的渐变色:

#import "LBGradientEffectViewController.h"

@interface LBGradientEffectViewController ()

@property (nonatomic, strong) NSTimer* timer;
@property (nonatomic, strong) CAGradientLayer* gradientLayer;

@end

@implementation LBGradientEffectViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //How to use it ? . Firstly , paste a image in it.
    
    //初始化imageView
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"stuff.jpg"]];
    imageView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 200);
    imageView.center = self.view.center;
    [self.view addSubview:imageView];
    
    //初始化渐变层
    self.gradientLayer = [CAGradientLayer layer];
    self.gradientLayer.frame = imageView.bounds;
    [imageView.layer addSublayer:self.gradientLayer];
    
    //设置渐变颜色方向
    self.gradientLayer.startPoint = CGPointMake(0, 0);
    self.gradientLayer.endPoint = CGPointMake(0, 1);

    //设定颜色组
    self.gradientLayer.colors = @[(__bridge  id)[UIColor clearColor].CGColor,
                                  (__bridge id)[UIColor purpleColor].CGColor];
    
    //设定颜色分割点
    self.gradientLayer.locations = @[@(0.5f), @(1.0f)];
    
    self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(TimerEvent) userInfo:nil repeats:YES];
}

- (void)TimerEvent
{
    //定时改变颜色
    self.gradientLayer.colors = @[(__bridge id)[UIColor clearColor].CGColor,
                                  (__bridge id)[UIColor colorWithRed:arc4random() % 255 / 255.0
                                                               green:arc4random() % 255 / 255.0
                                                                blue:arc4random() % 255 / 255.0 alpha:1.0].CGColor];
    
    //定时改变分割点
    self.gradientLayer.locations = @[@(arc4random() % 10 / 10.0f), @(1.0f)];
}

@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值