2013-04-03 52 views
0

我有一個包含兩個選項卡的標籤欄控制器:UIView和UITableView控制器。背景圖像中UIView和UITableView之間的不一致

我想在他們有相同的背景圖像,但問題是圖像在UITableView中調整大小。

Here你可以看到區別。

爲了添加背景圖像I在UIView的使用此代碼:

UIGraphicsBeginImageContext(self.view.frame.size); 
[[UIImage imageNamed:@"background.jpg"] drawInRect:self.view.bounds]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 

這對於UITableView的:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage: 
[UIImage imageNamed:@"background.jpg"]]; 
[tempImageView setFrame:self.tableView.frame]; 
self.tableView.backgroundView = tempImageView; 

要檢查我用

NSLog(@"%@", NSStringFromCGSize(self.view.frame.size)); 
視圖幀大小

並用此表格查看

NSLog(@"%@", NSStringFromCGRect(self.tableView.frame)); 

的結果是一樣的({320} 460)

我甚至試過在IB的XCode添加UIView的背景圖片,但沒有運氣。

圖像是大小爲640×1136的jpg。我也嘗試過一個PNG文件,沒有運氣。

任何建議表示讚賞。

回答

0

對於這兩種情況,您可以使用colorWithPatternImage:

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:YOUR IMAGE"]];

+0

感謝Pranav。有用!現在我得到了匹配。 – Ehsan

+0

這可行,但它使用大量的記憶,比你想象的更多。請參閱此處瞭解更多詳情。 http://www.cocoaintheshell.com/2011/01/colorwithpatternimage-memory-usage/ –

1

我沒有使用什麼Pranav的回答是,在我使用的UITableView:

UIView* backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height)]; 
[backgroundView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.jpg"]]]; 
[self.tableView setBackgroundView:backgroundView]; 

,並在UIView的我只是用:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.jpg"]];