分享两个例子:
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