iOS iPhone 开发 UItableView中的单元格背景渐变
渐变如果用背景图片,会让你的app臃肿。给APP瘦身,我们可以使用代码来解决渐变的问题。这篇文章是解决表格中的单元格的简便问题,同时解决单元格外边框问题。
1:设置好开始颜色与结束颜色。推荐一个小工具,在chrome浏览器上安装一个扩展 chroma 这个东西能帮助你很好的选择颜色。
下载地址:https://chrome.google.com/webstore/detail/chroma/gefgglgjdlddcpcapigheknb
2:接下来就是代码了
创建一个
CellbackgroundVIew.h
- #import
-
@interface CellbackgroundVIew : UIView -
@end
CellbackgroundVIew.m
- #import
"CellbackgroundVIew.h" -
@implementation CellbackgroundVIew -
- (void)drawRect:(CGRect)rect -
{ -
CGContextRef context = UIGraphicsGetCurrentCont ext(); -
-
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDevice RGB(); -
// 创建起点颜色 白色 -
CGColorRef beginColor = CGColorCreate(colorSpaceRef, (CGFloat[]){1.0f, 1.0f, 1.0f, 1.0f}); -
// 创建终点颜色 灰色 RGB(212,212,212) 这个色值我们可以从chroma扩展插件中选择 -
class="brush:cpp; toolbar: true; auto-links: false;"> //(CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f} 0.83是 212/255的值 -
CGColorRef endColor = CGColorCreate(colorSpaceRef, (CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f}); -
CGRect paperRect = self.bounds; -
CGColorSpaceRef colorSpace = CGColorSpaceCreateDevice RGB(); -
CGFloat locations[] = {0.0,1.0}; -
NSArray *colors = [NSArray arrayWithObjects:(__bridge id)beginColor,(__bridge id)endColor, nil]; -
CGGradientRef gradient = CGGradientCreateWithColo rs(colorSpace, (CFArrayRef)CFBridgingRetain(colors), locations); -
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect)); -
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect)); -
CGContextSaveGState(context); -
CGContextAddRect(context, rect); -
CGContextClip(context); -
CGContextDrawLinearGradi ent(context, gradient, startPoint, endPoint, 0); -
CGContextRestoreGState(context); -
CGGradientRelease(gradient); -
CGColorSpaceRelease(colorSpace); -
//add line stroke -
CGRect strokeRect = CGRectInset(paperRect, 5.0, 5.0); -
CGColorRef lineColor = CGColorCreate(colorSpaceRef, (CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f}); -
CGContextSetStrokeColorW ithColor(context, lineColor); -
CGContextSetLineWidth(context, 1.0); -
CGContextStrokeRect(context, strokeRect); -
} -
@end
在表格中我们的cell 可以设置backgroundview
- [cell
setBackgroundView: [[CellbackgroundVIew alloc] init]];