2011-04-28 299 views
55

我试图设置一个PNG图像作为我的tableview的背景。用下面的代码都很好!但只在iPhone模拟器上。如果我尝试在iPhone设备上运行应用程序,则tableview的背景保持为白色(或清除)。你的事情是关于我试图设置背景颜色的方式。我一直在尝试很多方法直到下面,但都有同样的问题。UITableView背景图片

self.tableView.backgroundColor = [UIColor clearColor]; 
self.tableView.opaque = NO; 
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; 

在此先感谢您!

+2

这听起来像图像不被复制到您的设备。 [[UIImageView alloc] initWithImage:[UIImage imageNamed:@“TableViewBackground.png”]];'在设备上返回?请将它转储到控制台。 – 2011-04-28 21:52:29

+0

我认为尼克是正确的,你可以使用调试器转储它,同时通过键入以下内容:'po [[UIImageView alloc] initWithImage:[UIImage imageNamed:@“TableViewBackground.png”]]';)clean/rebuild可能有帮助。 – 2011-04-28 21:55:19

+0

或者只是'NSLog(@“imageView:%@”,[[UIImageView alloc] initWithImage:[UIImage imageNamed:@“TableViewBackground。png“]]);' – 2011-04-28 22:03:29

回答

166

请使用下面的代码。

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; 
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView; 
[tempImageView release]; 

感谢,

+0

这已经讨厌我很久了。非常感谢!:) – Lucas 2012-01-05 08:26:17

+0

这比改变backgroundColor更好,因为它不会重复背景时,滚动或弹跳表。 – Shinigamae 2012-11-13 08:13:15

+0

谢谢。这解决了我的p roblem! – 2013-08-08 07:11:42

7

是您的图像实际上命名TableViewBackground.PNG(注意是大写)?您需要在iOS设备上完全匹配案例,而不需要完全匹配模拟器。

17

我觉得这个方法清洁:

UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"TableBackground.jpg"]]; 
self.tableView.backgroundColor = background; 
[background release]; 
+0

你知道如何将它固定在它的位置,这样它就不会随着桌子滚动吗?并使图像从顶部开始“X”像素? – 2012-05-03 18:49:57

+0

这将导致uitableview和滚动视图上的性能问题 – 2012-09-04 14:47:47

+1

在视网膜设备上使用此解决方案会导致图像拉伸。只是要注意的东西。 – 2013-02-26 02:26:10

5
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; 
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView; 
[tempImageView release]; 

这完美的作品。感谢Jona的Ravin

1

如果你想为你的背景使用一个图案图像,这个工作非常好。

UIImage *image = [UIImage imageNamed:@"something.png"]; 
self.tableView.backgroundView = nil; 
self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 
0

有点晚了,但也许所有其他寻找解决方案。

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

或者仅仅用一个背景色:我可以通过使用viewDidLoad方法UITableViewController以下代码获取工作

self.parentViewController.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

我花了一段时间才能找出答案,但现在它就像一个魅力。

2
[TableView setBackgroundView:nil]; 
[TableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.png"]] ]; 
3

的IBDesignable tableview中的子类,可以让你从界面生成器连接的图像

import UIKit 

@IBDesignable 
class DesignableTableView: UITableView { 

    @IBInspectable var backgroundImage: UIImage? { 
     didSet { 
      if let image = backgroundImage { 
       let backgroundImage = UIImageView(image: image) 
       backgroundImage.contentMode = UIViewContentMode.ScaleToFill 
       backgroundImage.clipsToBounds = false 
       self.backgroundView = backgroundImage 
      } 
     } 
    } 

} 
6

简单快速的版本将是

let tempImageView = UIImageView(image: UIImage(named: "yourImage")) 
tempImageView.frame = self.tableView.frame 
self.tableView.backgroundView = tempImageView; 
-3
UIImageView *imageviewTemp = [[UIImageView alloc] init]; 
[(UIImageView *)imageviewTemp sd_setImageWithURL:[NSURL URLWithString:self.stringOfPassedImage]]; 
[imageviewTemp setFrame:self.tableView.frame]; 
self.tableView.backgroundView = imageviewTemp; 
+1

你在哪里设置桌面视图上的背景图像?您不回答问题 – ddb 2016-08-04 07:31:21

+0

原始问题中没有任何内容暗示图像必须从网络中获取。此外'sd_setImageWithURL:'不可以通过UIKit。 – vikingosegundo 2017-08-30 09:43:44