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

问题描述:

我见过一些iPhone应用程序使用自定义图像作为分组UITableView的背景,而不是标准灰线。如何为分组表格视图设置背景图片?

这是如何实现的?

在另一个项目(使用2.2.1开发)中,我通过将UITableView'的背景不透明度设置为0%,然后使用Interface Builder将UIImageView分层。这使我有一个固定的背景,无论表状态如何。您也可以将UITableView的背景设置为图像,但随后背景会与表格一起滚动。 (我目前没有这个代码,但是我在Apple开发者论坛上看到了这个提示)。

请注意,这可能会导致一些性能问题。苹果公司不鼓励尽可能使用透明度,因为3GS之前的型号上的GPU不是特别强壮。

您可以使用像这样的+[UIColor colorWithPatternImage:(UIImage)]方法:

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 

的问题colorWithPatternImage:是,你需要使用“图案”的图像,否则你的形象会随机平铺

这个link一个简单的解决方案,如果你希望所有的意见,具有相同背景

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

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更新可能会完全破坏您的代码。不要这样做。 – 2011-03-29 12:31:10

下面是我工作(且相当简单,一旦我想通了;)

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]; 

而在我的情况下,在v在第2步中,控制器是一个tableviewcontroller。看起来很棒。

而且顺便说一句,在做每个视图控制器下面没有工作:

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

所以,按照上述步骤1和2。

希望这有助于出来, TBONE

+0

我喜欢这个把戏。 – winnicki 2012-05-12 03:47:43

+2

在应用程序委托中,您还可以更轻松地执行:self.window。backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@“bg.png”]]; – 2012-10-14 18:39:03

+0

我同意Gil Margolin的说法......将窗口的backgroundColor设置为图像比较容易。有一个警告 - 你必须手动加载retina/iphone5的正确图像,这会让事情变得复杂一点。 – 2013-02-10 18:44:00

试试这个

- (void) viewDidLoad { 
    [super viewDidLoad]; 

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

您也可以在表格视图后面添加图像视图,而不是设置背景颜色,这样可以避免使用图案图像。 – TigerCoding 2011-11-30 10:00:36