如何为分组表格视图设置背景图片?

10

我看过一些使用自定义图片作为分组UITableView背景的iPhone应用程序,而非标准灰线的应用程序。

这是如何实现的?

6个回答

23

以下是对我起作用的方法(一旦我弄清楚了,就相当简单);

1)在您的应用程序委托中添加一个视图,并将其设置为窗口的子视图:

UIView *bgView = [[UIView alloc]initWithFrame:window.frame];

 bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
 [window addSubview:bgView];
 [bgView release];

2) 在每个视图控制器的.m文件中,在ViewDidLoad下,将该特定视图的背景颜色设置为透明(这样上面创建的其他bgView将会显示):

self.view.backgroundColor = [UIColor clearColor];

在我的情况下,第2步中的视图控制器是一个表视图控制器。看起来很好。

顺便说一句,在每个视图控制器中进行以下操作并不起作用:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];

那么请按照上面的步骤1和2进行操作。

希望这能帮到你, Tbone


2
在应用程序委托中,您还可以更轻松地执行以下操作:self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]]; - Gil Margolin
我同意Gil Margolin的观点……将窗口的backgroundColor设置为图像要容易得多。但有一个限制——您必须手动加载适用于retina / iphone5的正确图像,这使事情有点复杂化了。 - Andy S

9

试试这个

- (void) viewDidLoad {
    [super viewDidLoad];

    self.tableView.backgroundColor = [UIColor clearColor];
    self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"wallpaper.png"]];
    self.tableView.opaque = NO;
}

你也可以在表视图后面添加一个图像视图,而不是设置背景颜色,这样可以避免使用图案图片。 - TigerCoding

3
在另一个项目中(使用2.2.1开发),我通过将UITableView的背景透明度设置为0%,然后在Interface Builder中简单地将UIImageView层叠在其后面来实现这一点。这样可以使背景固定,无论表格状态如何。您还可以将UITableView的背景设置为图像,但是那样背景会随着表格滚动而移动。(我暂时没有代码,但是我之前在苹果开发者论坛上得到了这个提示)。
请注意,这可能会导致某些性能问题。Apple尽可能地不建议使用透明度,因为早期型号的GPU并不特别强大。

3
您可以使用+[UIColor colorWithPatternImage:(UIImage)]方法,如下所示:
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];

2

2
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SortByCategory_320x480.png"]];

self.tableView.separatorColor = [UIColor clearColor];

self.tableView.backgroundColor = [UIColor clearColor];

希望这能帮到你。在分组的UITableView中,它不会在单元格后面显示丑陋的半透明背景。

4
访问parentViewController.view是一个糟糕的想法 - 你不知道它的支持方式是什么,并且这是对封装性的严重侵犯。即使现在可以工作,下一个iOS更新可能会完全破坏你的代码。不要这样做。 - Michael Tyson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接