IOS iPhone 开发 UItableView中的单元格背景渐变

IOS iPhone 开发 UItableView中的单元格背景渐变

渐变如果用背景图片,会让你的app臃肿。给APP瘦身,我们可以使用代码来解决渐变的问题。这篇文章是解决表格中的单元格的简便问题,同时解决单元格外边框问题。

1:设置好开始颜色与结束颜色。推荐一个小工具,在chrome浏览器上安装一个扩展 chroma 这个东西能帮助你很好的选择颜色。

下载地址:https://chrome.google.com/webstore/detail/chroma/gefgglgjdlddcpcapigheknbacbmmggp

2:接下来就是代码了 

创建一个 CellbackgroundVIew 



CellbackgroundVIew.h

1 #import <UIKit/UIKit.h>
2  
3 @interface CellbackgroundVIew : UIView
4  
5 @end

CellbackgroundVIew.m

01 #import "CellbackgroundVIew.h"
02  
03 @implementation CellbackgroundVIew
04  
05  
06  
07 - (void)drawRect:(CGRect)rect
08 {
09      
10  
11     CGContextRef context = UIGraphicsGetCurrentContext();
12      
13     CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();   
14      
15     // 创建起点颜色 白色
16     CGColorRef beginColor = CGColorCreate(colorSpaceRef, (CGFloat[]){1.0f, 1.0f, 1.0f, 1.0f});
17      
18     // 创建终点颜色 灰色 RGB(212,212,212) 这个色值我们可以从chroma扩展插件中选择
19 <pre class="brush:cpp; toolbar: true; auto-links: false;">   //(CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f} 0.83是 212/255的值</pre>
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);
35     //add line stroke
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);
41 }
42 @end

在表格中我们的cell 可以设置backgroundview

view source
print ?
1 [cell setBackgroundView: [[CellbackgroundVIew alloc] init]];

你可能感兴趣的:(IOS iPhone 开发 UItableView中的单元格背景渐变)