2013-04-17 133 views
0

我嘗試使用下面的方法來設置一個UITableView背景:UITableView的背景滾動,但不重複

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundImage.png"]]]; 

這個偉大的工程製作背景滾動與表。不過,我的背景圖像漸變爲純色,所以而不是的背景重複,我很喜歡它只是向上滾動,適合屏幕高度。然後我可以設置self.viewbackgroundColor爲純色,它看起來很棒。

其他選項似乎是在底部的一個小圖像,但這似乎很複雜,我不太明白如何使用CGContext繪製背景和blit。

誰能告訴我如何做到這一點?

Example Of What I Want

+0

你可以發佈它是什麼現在的屏幕截圖,以及你想要它是什麼? – viral

+0

@病毒 - 我添加了我想要的圖像。 –

回答

0

我不知道這是否會工作,但你應該嘗試創建用於背景的可調整大小的UIImage:

如果你想像素的最後一行重複,你會調用

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode 

圖像([UIImage imageNamed:@"backgroundImage.png"]) 與edgeinsets上:UIEdgeInsetsMake(backgroundImage.size.height-1,0,0,0) 和resizingMode:UIImageResizingModeStretch

完整的呼叫看起來像

UIImage* backgroundImage = [UIImage imageNamed:@"backgroundImage.png"]; 
UIImage* newBackgroundImage = [backgroundImage resizableImageWithCapInsets:UIEdgeInsetsMake(backgroundImage.size.height-1,0,0,0) resizingMode:UIImageResizingModeStretch]; 

現在,你可以嘗試使用這個形象爲圖案製作:

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:newBackgroundImage]]; 
+0

感謝您的建議。我只是試過這個,但它似乎沒有做任何不同的事情。我認爲這個解決方案的問題是tableView在滾動時不會增加frame.size.height,因此它只是重複圖像,而不是拉伸背景顏色。 –

0

這爲我工作:

UIImageView* bgImageView = [[UIImageView alloc] initWithFrame:self.tableView.frame]; 
bgImageView.image = [UIImage imageNamed:@"bg"]; 
bgImageView.contentMode = UIViewContentModeTop; 
[self.tableView addSubview:bgImageView]; 
[self.tableView sendSubviewToBack:bgImageView]; 

在我的情況下,它工作得很好。我沒有用很多重複使用的單元測試它。但它應該工作:D