【发布时间】:2014-06-05 15:45:28
【问题描述】:
这里和其他地方有几十个优秀的examples 介绍如何使用渐变
-(void)drawRect:(CGRect)rect
但是,我是 Quartz 的新手,我可能遗漏了一些东西。当我找到this 时,创建一个 CAGradientLayer 然后将其添加到我的视图中似乎更聪明:
-(void)viewWillAppear
{
CAGradientLayer *bgLayer = [BackgroundLayer blueGradient];
bgLayer.frame = self.view.bounds;
[self.view.layer insertSublayer:bgLayer atIndex:0];
}
其中 blueGradient 是一个单独的类方法(在 BackgroundLayer.m 中),它创建渐变,如下所示:
+ (CAGradientLayer*) blueGradient {
UIColor *colorOne = [UIColor colorWithRed:(120/255.0) green:(135/255.0) blue:(150/255.0) alpha:1.0];
UIColor *colorTwo = [UIColor colorWithRed:(57/255.0) green:(79/255.0) blue:(96/255.0) alpha:1.0];
NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];
NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
NSNumber *stopTwo = [NSNumber numberWithFloat:1.0];
NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil];
CAGradientLayer *headerLayer = [CAGradientLayer layer];
headerLayer.colors = colors;
headerLayer.locations = locations;
return headerLayer;
}
所以这是我的问题。如果我想创建一个径向渐变而不是这个简单的线性渐变怎么办?如何扩展 blueGradient 以便它可以处理二维渐变?或者如果我想在渐变上添加渐变怎么办? drawRect 函数似乎非常有限。
或者也许这只是错误的方法......那么我缺少什么接线?如何使用 drawRect 向我的视图添加渐变?我想确定我是以模块化的方式来做的,所以我可以添加渐变叠加等,作为必要的附加层。
【问题讨论】:
标签: ios objective-c gradient