使用渐变背景deviseUITableViewCells的样式

我一直在寻找方法来提高我的iPhone应用程序的整体吸引力。 大部分的function发生在UITableView中。 我想我可以从UITableViewCells添加微妙的渐变开始,因为这似乎将应用程序的感觉提高了一个数量级。 select适当的字体/大小也有很大的帮助。 我对这个论坛的问题是,向UITableViewCells添加渐变的最佳策略是什么? 你正在使用核心graphics/石英? 你使用1×1像素的图像,并扩展它? 我很喜欢Tumblr iPhone应用程序的以下屏幕截图: http : //dl-client.getdropbox.com/u/57676/screenshots/tumblr.jpg

有没有人有任何如何使你的UITableViewCell伸出的好例子?

而出于性能的原因,使用图像还是使用Quartz绘图更好? 如果Quartz,我很想看到一些示例代码,人们如何绘制渐变到单元格中。

谢谢。

我为Tumblr工作,虽然我没有写iPhone应用程序( 他做的 ),但我有源,可以告诉你如何完成。

-tableView:cellForRowAtIndexPath:

 cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"postCellBackground.png"]]; cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"postCellBackgroundSelected.png"]]; 

非常简单,真的:UIImageView中的PNG图像作为单元格的背景视图。

这两个图像是1×61垂直渐变,UIKit自动水平拉伸,以适应单元格的宽度。

从iPhone SDK 3.0开始,有一个更简单的解决scheme,它依赖于新的CAGradientLayer,并且不需要子类或图像 。

Marco的答案对于普通表格视图单元格和位于表格视图中间的分组表格视图单元格非常适用,但是如果您尝试为分组表格中的第一个/最后一个单元格设置背景视图,圆angular。 要修复它,你可以设置单元格背景颜色为UIColor colorWithPatternImage ,例如:

 cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Gradient.png"]]; 

我会用石英二维,但在Photoshop中设置图像也是完全有效的。

至于性能,如果你按照types重新使用单元格,我不认为这会是一个问题 – 但是如果你确实发现它是一个瓶颈,你可以画一次位图上下文,从中获取图像并使用到处都是 – 一种混合解决scheme。

UITableViewCell支持单独的背景和背景视图,所以使用这些属性是有意义的。 要做到这一点,你需要拿出一个完整尺寸的图像(UIImageView不会拉伸它的图像),所以你最好在台式机上做一次,然后保存在手机上的周期,将不得不花费拉伸图像或dynamic。 但是,如果您打算允许用户更改渐变颜色,则无论如何您都必须dynamic创build一次。

我认为最简单的方法是使用Interface Builder处理UITableView。 这使得UIdevise工作比纯粹的核心工作更容易。 这里有一个很好的教程(带video!)如何做到这一点。 强烈推荐。 我没有使用任何其他方法的UITableView编码,因为我跟着。

话虽如此,为您的单元格添加渐变将是非常容易的。 只需使用InterfaceBuilder将包含渐变的图像添加到单元格视图中即可完成。 您不必担心Quartz,性能上也会得到类似的结果,因为CocoaTouch的组件非常适合执行简单的任务,比如显示图像。

如果你不想使用图像, Mirko的答案是一个很好的select。 不过,最好将渐变添加到backgroundView,而不是UITableViewcell本身。 这样在select单元格时不会丢失高光效果