我正在自定义我的UITableView,我想出了如何设置每个单元格的选定颜色。在我的cellForRowAtIndexPath方法中,我有以下代码:
UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor orangeColor]];
[cell setSelectedBackgroundView:bgColorView];
[bgColorView release];但它是一个实心的橙子。我想让它看起来更光滑,并有一个从浅橙色到深橙色的轻微渐变。我该怎么做呢?
发布于 2011-06-28 23:14:08
您将使用Core Graphics (也称为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。
发布于 2011-06-28 23:14:04
您必须覆盖视图的drawRect方法才能绘制渐变。它可以是一种PIA,但您也可以查看这个开源组件,它可能会起作用:
http://cocoacontrols.com/platforms/ios/controls/gradient-view
发布于 2011-06-28 23:19:10
@Caleb的答案是正确的;我这样做的目的很多。
没有人提到的是,您需要为其实现drawRect:的视图是一个自定义UITableViewCell。
https://stackoverflow.com/questions/6508674
复制相似问题