iOS開發(fā) UItableView中的單元格背景漸變
iOS iPhone 開發(fā) UItableView中的單元格背景漸變
漸變?nèi)绻帽尘皥D片,會讓你的app臃腫。給APP瘦身,我們可以使用代碼來解決漸變的問題。這篇文章是解決表格中的單元格的簡便問題,同時解決單元格外邊框問題。
1:設(shè)置好開始顏色與結(jié)束顏色。推薦一個小工具,在chrome瀏覽器上安裝一個擴(kuò)展 chroma 這個東西能幫助你很好的選擇顏色。
下載地址:https://chrome.google.com/webstore/detail/chroma/gefgglgjdlddcpcapigheknbacbmmggp
2:接下來就是代碼了
創(chuàng)建一個 CellbackgroundVIew
CellbackgroundVIew.h
- #import <UIKit/UIKit.h>
- @interface CellbackgroundVIew : UIView
- @end
CellbackgroundVIew.m
- #import "CellbackgroundVIew.h"
- @implementation CellbackgroundVIew
- - (void)drawRect:(CGRect)rect
- {
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
- // 創(chuàng)建起點(diǎn)顏色 白色
- CGColorRef beginColor = CGColorCreate(colorSpaceRef, (CGFloat[]){1.0f, 1.0f, 1.0f, 1.0f});
- // 創(chuàng)建終點(diǎn)顏色 灰色 RGB(212,212,212) 這個色值我們可以從chroma擴(kuò)展插件中選擇
- <pre class="brush:cpp; toolbar: true; auto-links: false;"> //(CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f} 0.83是 212/255的值</pre>
- CGColorRef endColor = CGColorCreate(colorSpaceRef, (CGFloat[]){0.83f, 0.83f, 0.83f, 1.0f});
- CGRect paperRect = self.bounds;
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
- CGFloat locations[] = {0.0,1.0};
- NSArray *colors = [NSArray arrayWithObjects:(__bridge id)beginColor,(__bridge id)endColor, nil];
- CGGradientRef gradient = CGGradientCreateWithColors(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);
- CGContextDrawLinearGradient(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});
- CGContextSetStrokeColorWithColor(context, lineColor);
- CGContextSetLineWidth(context, 1.0);
- CGContextStrokeRect(context, strokeRect);
- }
- @end
在表格中我們的cell 可以設(shè)置backgroundview
- [cell setBackgroundView: [[CellbackgroundVIew alloc] init]];