IOS iPhone 开发 UItableView中的单元格背景渐变
渐变如果用背景图片,会让你的app臃肿。给APP瘦身,我们可以使用代码来解决渐变的问题。这篇文章是解决表格中的单元格的简便问题,同时解决单元格外边框问题。
1:设置好开始颜色与结束颜色。推荐一个小工具,在chrome浏览器上安装一个扩展 chroma 这个东西能帮助你很好的选择颜色。
下载地址:https://chrome.google.com/webstore/detail/chroma/gefgglgjdlddcpcapigheknbacbmmggp
![](http://static.oschina.net/uploads/space/2013/0616/231038_xHR8_1032844.png)
2:接下来就是代码了
创建一个 CellbackgroundVIew
CellbackgroundVIew.h
1 | #import <UIKit/UIKit.h> |
3 | @interface CellbackgroundVIew : UIView |
CellbackgroundVIew.m
01 | #import "CellbackgroundVIew.h" |
03 | @implementation CellbackgroundVIew |
07 | - ( void )drawRect:(CGRect)rect |
11 | CGContextRef context = UIGraphicsGetCurrentContext(); |
13 | CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); |
16 | CGColorRef beginColor = CGColorCreate(colorSpaceRef, (CGFloat[]){1.0f, 1.0f, 1.0f, 1.0f}); |
19 | <pre class = "brush:cpp; toolbar: true; auto-links: false;" > |
20 | CGColorRef endColor = CGColorCreate(colorSpaceRef, (CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f}); |
21 | CGRect paperRect = self.bounds; |
22 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); |
23 | CGFloat locations[] = {0.0,1.0}; |
24 | NSArray *colors = [NSArray arrayWithObjects:(__bridge id)beginColor,(__bridge id)endColor, nil]; |
25 | CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)CFBridgingRetain(colors), locations); |
26 | CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect)); |
27 | CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect)); |
28 | CGContextSaveGState(context); |
29 | CGContextAddRect(context, rect); |
30 | CGContextClip(context); |
31 | CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); |
32 | CGContextRestoreGState(context); |
33 | CGGradientRelease(gradient); |
34 | CGColorSpaceRelease(colorSpace); |
36 | CGRect strokeRect = CGRectInset(paperRect, 5.0, 5.0); |
37 | CGColorRef lineColor = CGColorCreate(colorSpaceRef, (CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f}); |
38 | CGContextSetStrokeColorWithColor(context, lineColor); |
39 | CGContextSetLineWidth(context, 1.0); |
40 | CGContextStrokeRect(context, strokeRect); |
在表格中我们的cell 可以设置backgroundview
1 | [cell setBackgroundView: [[CellbackgroundVIew alloc] init]]; |