我见过一些iPhone应用程序使用自定义图像作为分组UITableView的背景,而不是标准灰线。
这是如何实现的?
答案 0 :(得分:24)
这对我有用(一旦我弄清楚就相当简单;)
1)在你的app delegate中添加一个视图,并使其成为窗口的子视图:
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中的视图控制器是一个tableviewcontroller。看起来很棒。
顺便说一句,在每个视图控制器中执行以下操作并不能很好地工作:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
请按照上面的步骤1和2进行操作。
希望这会有所帮助, TBONE
答案 1 :(得分:9)
试试这个
- (void) viewDidLoad {
[super viewDidLoad];
self.tableView.backgroundColor = [UIColor clearColor];
self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"wallpaper.png"]];
self.tableView.opaque = NO;
}
答案 2 :(得分:3)
在另一个项目(使用2.2.1开发)中,我通过将UITableView'
的背景不透明度设置为0%,然后使用Interface Builder简单地在其后面分层UIImageView
来完成此操作。无论表状态如何,这都允许我具有固定的背景。您也可以将UITableView
的背景设置为图像,但背景会随表格滚动。 (我目前没有方便的代码,但我在Apple开发者论坛上得到了一些提示)。
请注意,这可能会导致一些性能问题。苹果不鼓励尽可能使用透明度,因为3GS之前型号的GPU并不是特别强大。
答案 3 :(得分:3)
您可以使用+[UIColor colorWithPatternImage:(UIImage)]
方法,如下所示:
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
答案 4 :(得分:2)
colorWithPatternImage的问题:你需要使用“图案化”图像,否则你的图像会随机平铺
此链接有一个简单的解决方案,如果您希望所有视图具有相同的背景
答案 5 :(得分:2)
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SortByCategory_320x480.png"]];
self.tableView.separatorColor = [UIColor clearColor];
self.tableView.backgroundColor = [UIColor clearColor];
希望这会有所帮助。它不会在细胞后面显示可怕的半透明背景,特别是在Grouped UITableView的情况下。