2013-07-30 386 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