UITableView的背景滚动,但不重复

问题描述:

我尝试使用下面的方法来设置一个UITableView背景:UITableView的背景滚动,但不重复

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

这个伟大的工程制作背景滚动与表。不过,我的背景图像渐变为纯色,所以而不是的背景重复,我很喜欢它只是向上滚动,适合屏幕高度。然后我可以设置self.viewbackgroundColor为纯色,它看起来很棒。

其他选项似乎是在底部的一个小图像,但这似乎很复杂,我不太明白如何使用CGContext绘制背景和blit。

谁能告诉我如何做到这一点?

Example Of What I Want

+0

你可以发布它是什么现在的屏幕截图,以及你想要它是什么? – viral

+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,因此它只是重复图像,而不是拉伸背景颜色。 –

这为我工作:

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