给UITableView增加一个好看的背景能为应用程序增色不少,并能促进app的销售,但是随便增加一个背景图片会史你的app更加丑陋。
- //This method produces odd artifacts in the background image:
- ATableViewController *yourTableViewController = [[ATableViewController alloc] initWithStyle:UITableViewStyleGrouped];
- yourTableViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TableViewBackground.png"]];
正确的方式:在tableview后面放置一个背景视图,并将tableview设为透明色。
- UIView *backgroundView = [[UIView alloc] initWithFrame: window.frame];
- backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TableViewBackground.png"]];
- [window addSubview:backgroundView];
- yourTableViewController = [[ATableViewController alloc] initWithStyle:UITableViewStyleGrouped];
- yourTableViewController.view.backgroundColor = [UIColor clearColor];
- [window addSubview:yourTableViewController.view];
这种方法产生的背景在整个表格Cell中是连续的整张图片。
当然,现在是直接在window下增加了背景层,有点不太灵活,在有导航栏的情况下,可以直接更改导航栏的背景,效果是一样的
- self.navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"wood1.png"]];
下面在单个的ViewController里更改背景
在用代码产生的tableViewcontroller中,可以通过loadview方法设置
- @interface SomeController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
- ...
- UITableView *tableView;
- ...
- }
- @property (nonatomic, retain) UITableView *tableView;
- @end
- @implementation SomeController
- @synthesize tableView;
- ...
- - (void)loadView {
- [super loadView];
- UIImageView *v = [[[UIImageView alloc] initWithFrame:self.view.bounds] autorelease];
- [v setImage:[UIImage imageNamed:@"table_background.png"]];
- [self.view addSubview:v];
- self.tableView = [[[UITableView alloc] initWithFrame:self.view.bounds] autorelease];
- [self.tableView setBackgroundColor:[UIColor clearColor]];
- [self.view addSubview:self.tableView];
- }
- ...
- @end