我有一个基于导航的应用程序,我将UITableViewControllers
推入堆栈。我想为所有UImage
添加背景UITableViewControllers
。不是UIColor
,而是UImage
。我知道如何使用Nib
文件并将UITableView
本身设置为使用[UIColor ClearColor]
来执行此操作,但我不想浏览所有UITableViewControllers
和将它们更改为使用Nib
个文件等。
我还发现this solution如果我在我的应用中只使用一个tableviewcontroller,这将是很棒的。我认为可能有一种方法可以通过在UITableViewController
默认创建的我的表格视图“下方”添加子视图来实现此功能。
任何建议都会很棒。
答案 0 :(得分:48)
基于导航的应用程序略有不同:只需更改每个表视图所在的导航视图的背景。将以下代码放在每个UITableViewController的viewDidLoad
中:
self.navigationController.view.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
但您可能只需要在导航控制器的顶层执行一次,而不是在每个tableview控制器中执行此操作(尽管您仍需要将每个背景设置为清除)。
答案 1 :(得分:16)
在iOS6上使用:
UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];
答案 2 :(得分:2)
如果您的类是UIViewController子类,那么您可以这样做:
[self.view setBackgroundColor:
[UIColor colorWithPatternImage:
[UIImage imageWithContentsOfFile:
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
@"background.png"]]]];
答案 3 :(得分:2)
UIImageView *backgroundView =
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0,
0,
self.navigationController.view.frame.size.width,
self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];
正如Gorm所说
只需要在
的顶层执行一次UINavigationController
答案 4 :(得分:1)
给我Madhup的答案是正确的答案。 UITableViewController是UIViewController的子类,因此将它添加到UITableViewController的viewDidLoad方法效果很好。
答案 5 :(得分:1)
从iOS 3.2开始, - [UITableView setBackgroundView:]存在,这可能比其他一些提出的解决方案更容易。