2013-07-30 171 views
2

我想给的背景图像我的UITableView,所以这个方法我试过:iPhone - UITableView的背景

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 
UIImageView *v = [[UIImageView alloc] initWithFrame:self.view.bounds]; 
[v setImage:[UIImage imageNamed:@"Background.png"]]; 
[self.view addSubview:v]; 
[self.view sendSubviewToBack: v]; 
... 
} 

这工作得很好。但是,在pushViewController之后,此方法不再起作用(为什么?)。所以我改变了方法:

- (void)viewDidLoad 
{ 
[super loadView]; 
// Do any additional setup after loading the view from its nib. 
self.tableView.backgroundView = nil; 
self.tableView.backgroundColor = [[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 
... 
} 

这可以工作,但结果不是我所期望的。不知何故,背景图片会改变其大小(如部分放大),并且单元格的背景比前一个更暗。

任何人都知道原因?我一直坚持这个问题很长一段时间。

非常感谢!

+0

显示我的答案。你在tableview中添加图像视图。不在视图 –

+0

在viewWillAppear中尝试你的代码:这会工作。 – Suryakant

回答

1

尝试这个代码,我敢肯定它会工作

UIImage * targetImage = [UIImage imageNamed:@"coloured_flower.jpg"]; 
UIGraphicsBeginImageContextWithOptions(tableView.frame.size, NO, 0.f); 
[targetImage drawInRect:CGRectMake(0.f, 0.f, tableView.frame.size.width, tableView.frame.size.height)]; 
UIImage * resultImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
tableView.backgroundColor = [UIColor colorWithPatternImage:resultImage]; 
+0

非常感谢!是的,这是有用的:) – user2633210

3

使用此:

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

编辑:

UIImage *myImage = [[UIImage alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
myImage.image = [UIImage imageNamed:@"TableBackground.jpg"]; 
UIColor *background = [[UIColor alloc] initWithPatternImage:myImage]; 
self.tableView.backgroundColor = background; 
[background release]; 
+0

检查编辑为您查询 –

+0

感谢您的回复!但这仍然无法工作。我复制了你所说的,编译器显示“不兼容的指针类型将UIImageView *发送给UIImage *类型的参数” – user2633210

+0

立即尝试,这将解决您的查询 –

1
UITableView *tblView=[[UITableView alloc] init]; 
[tblView setFrame:CGRectMake(0, 0, 320, 300)]; 


UIImageView *imgView=[[UIImageView alloc] initWithFrame:tblView.frame]; 
[imgView setImage:[UIImage imageNamed:@"cinemax.jpg"]]; 
tblView.backgroundView=imgView; 

[self.view addSubview:tblView]; 
+0

感谢您的帮助!但这工作不可思议......完全阻止表和tblView的框架是不正确的大小 – user2633210

+0

这是imageView你可以调整它到tableView frame.then你面对的是什么类型的问题我不完全理解.pls详细这行“完全阻止表”或显示我的一些截图 – Warewolf

+0

是的,我得到的大小。对不起,我无法上传屏幕截图...只是背景图片出现在桌面前 – user2633210