UITableView风格与背景图像

时间:2012-03-24 12:11:35

标签: objective-c ios uitableview

有没有办法以编程方式在此图像上执行UITableView背景?我的意思是做顶部和左边界黑暗,右边和底部白色。如果不可能,我怎么能用一个图像来实现它(我的UITableViewCell可能有不同的高度)?谢谢!

enter image description here

4 个答案:

答案 0 :(得分:0)

您可以使用coregraphics EOClip剪切主框的形状,然后应用2个每个像素大小的阴影。

答案 1 :(得分:0)

您可以使用Core Graphics实现此目的。

有关如何使用Core Graphics的教程,请参阅this

请注意,这可能会更加复杂并且涉及到您想要实现的目标,并且可能存在更简单的解决方案,但如果所有其他方法都失败了,那么CG肯定会有效:)。

答案 2 :(得分:0)

你可以制作一个黑色半透明圆角矩形的小方形png图像,边框上有高光和阴影。

然后您使用UIImageView制作imageView.contentStretch = CGRectMake(0.5f, 0.5f, 0, 0)并将其设置为您的桌子或单元格的背景视图。

答案 3 :(得分:0)

你可以使用这个很棒的教程http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

基本上改变此方法中的背景图像:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 /// some code....

UIImage *rowBackground;
UIImage *selectionBackground;
NSInteger sectionRows = [aTableView numberOfRowsInSection:[indexPath section]];
NSInteger row = [indexPath row];
if (row == 0 && row == sectionRows - 1)
{
    rowBackground = [UIImage imageNamed:@"topAndBottomRow.png"];
    selectionBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];
}
else if (row == 0)
{
    rowBackground = [UIImage imageNamed:@"topRow.png"];
    selectionBackground = [UIImage imageNamed:@"topRowSelected.png"];
}
else if (row == sectionRows - 1)
{
    rowBackground = [UIImage imageNamed:@"bottomRow.png"];
    selectionBackground = [UIImage imageNamed:@"bottomRowSelected.png"];
}
else
{
    rowBackground = [UIImage imageNamed:@"middleRow.png"];
    selectionBackground = [UIImage imageNamed:@"middleRowSelected.png"];
}
((UIImageView *)cell.backgroundView).image = rowBackground;
((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;

// more code...

你只能使用中间行,因为这段代码有3个图像,一个用于第一行,一个用于最后一行,一个用于中间行。希望它有所帮助。