最近用code写了些view上的渐变效果,使得app的UI特效不必全部依赖美工出的图片。
效果如下:
主要用到了Layer上的渐变层,核心代码如下,关于CALayer的使用可参考
- //Transparent Gradient Layer
- - (void) insertTransparentGradient {
- UIColor *colorOne = [UIColor colorWithRed:(33/255.0) green:(33/255.0) blue:(33/255.0) alpha:0.0];
- UIColor *colorTwo = [UIColor colorWithRed:(33/255.0) green:(33/255.0) blue:(33/255.0) alpha:1.0];
- NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil nil];
- NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
- NSNumber *stopTwo = [NSNumber numberWithFloat:1.0];
- NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil nil];
- //crate gradient layer
- CAGradientLayer *headerLayer = [CAGradientLayer layer];
- headerLayer.colors = colors;
- headerLayer.locations = locations;
- headerLayer.frame = self.bounds;
- [self.layer insertSublayer:headerLayer atIndex:0];
- }
- //color gradient layer
- - (void) insertColorGradient {
- UIColor *colorOne = [UIColor colorWithRed:(255/255.0) green:(255/255.0) blue:(255/255.0) alpha:1.0];
- UIColor *colorTwo = [UIColor colorWithRed:(33/255.0) green:(33/255.0) blue:(33/255.0) alpha:1.0];
- NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil nil];
- NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
- NSNumber *stopTwo = [NSNumber numberWithFloat:1.0];
- NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil nil];
- CAGradientLayer *headerLayer = [CAGradientLayer layer];
- headerLayer.colors = colors;
- headerLayer.locations = locations;
- headerLayer.frame = self.bounds;
- [self.layer insertSublayer:headerLayer above:0];
- }