iPhone - 在UITableViewController上设置背景

Han*_*pen 50 iphone background uitableview

有没有办法在UITableViewController上设置背景视图?

我尝试使用我正在使用的代码UIViewController,但视图覆盖​​了表视图的所有内容.如果我在其中添加背景视图cellForRowAtIndexPath-method,则根本不显示.有没有人以前做过这个或者知道如何做到这一点?这是我正在使用的代码:

UIImage *image = [UIImage imageNamed: @"background.jpg"];
UIImageView *backImage = [[UIImageView alloc] initWithImage: image];
[self.view addSubview: backImage];
[self.view sendSubviewToBack: backImage];
Run Code Online (Sandbox Code Playgroud)

Fra*_*ade 72

我知道这已经很长时间了,但仅仅是为了记录......我想我找到了一个更好的解决方案UITableView.backgroundView:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"lisbon.png"]];

self.tableView.backgroundView = imageView;
[imageView release];
Run Code Online (Sandbox Code Playgroud)

我尝试在iPhone上使用320x480的图像尺寸,并且工作完美(我也尝试过使用.jpg).


Nic*_*rge 68

(这与Hans Espen上面的解决方案基本相同,但为了简洁起见使用便利方法)

把它放在你的[UITableViewControllerSubclass viewDidLoad]方法中:

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"BackgroundPattern.png"]];
Run Code Online (Sandbox Code Playgroud)

避免在viewDidLoad方法中使用几个自动释放是没有意义的,因为它很少被调用(当视图实际加载时),因此对性能的影响可以忽略不计.

注意您应始终在iPhone上使用PNG图像,而不是JPEG或任何其他格式.

  • 我应该澄清一下 - 将PNG用于非摄影的一切.PNG由iOS设备上的GPU硬件加速,因此您的所有UI图像都应采用PNG格式.PNG支持alpha透明度,这是大量UI图形的必需品.对于任何摄影,JPEG压缩会给你较小的文件大小,这可能是一个好处. (13认同)
  • 当表格设置为分组样式时,这会设置每个组的背景,有没有办法解决这个问题? (2认同)

Han*_*pen 6

实际上,我让它工作了!:)

NSString *backgroundPath = [[NSBundle mainBundle] pathForResource:@"background" ofType:@"jpg"];
UIImage *backgroundImage = [UIImage imageWithContentsOfFile:backgroundPath];
UIColor *backgroundColor = [[UIColor alloc] initWithPatternImage:backgroundImage];
self.tableView.backgroundColor = backgroundColor; 
[backgroundColor release];
Run Code Online (Sandbox Code Playgroud)


Zai*_*han 5

对于Swift使用这个,

self.tableView.backgroundView = UIImageView(image: UIImage(named: "backgroundImage.png"))
Run Code Online (Sandbox Code Playgroud)