我正在自定义我的UITableView,我想出了如何设置每个单元格的选定颜色。在我的cellForRowAtIndexPath
方法中,我有以下代码:
UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor orangeColor]];
[cell setSelectedBackgroundView:bgColorView];
[bgColorView release];
但它是一个坚实的橙色。我希望它看起来更光滑,并且从浅橙色到深橙色都有一个轻微的渐变。我怎么能这样做?
答案 0 :(得分:3)
您必须覆盖视图的drawRect方法才能绘制渐变。它可以是一种PIA,但您也可以查看这个可能有用的开源组件:
http://cocoacontrols.com/platforms/ios/controls/gradient-view
答案 1 :(得分:3)
您可以使用Core Graphics(a.k.a。Quartz)在视图的-drawRect:
方法中绘制渐变:
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat colors[8] = {1.0, 0.75, 0.30, 0.5, 0.7, 0.2, 1.0, 0.8};
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(space, colors, NULL, 2);
CGContextDrawLinearGradient(ctx, gradient, top, bottom, NULL);
您可以通过在当前上下文(ctx)中创建路径以及使用CGContextClip(ctx);
对其进行裁剪来限制渐变填充的区域。 top
和bottom
是定义渐变开始和结束的CGPoints。
答案 2 :(得分:1)
@ Caleb的回答是正确的;我这样做是为了各种各样的事情。
没有人提到您需要实施drawRect:
的视图是自定义UITableViewCell
。
答案 3 :(得分:0)
简单的谷歌搜索会找到你的答案......
http://bluesplat-tech.blogspot.com/2009/03/gradient-shading-uiview.html
答案 4 :(得分:0)
如果您想要复杂或微妙的渐变,可以设置部分alpha的背景图像,并设置单元格背景颜色以更改外观。