背景图片中UIView和UITableView不一致
Posted
技术标签:
【中文标题】背景图片中UIView和UITableView不一致【英文标题】:Inconsistency between UIView and UITableView in background image 【发布时间】:2013-04-03 11:58:13 【问题描述】:我有一个标签栏控制器,其中包含两个标签:UIView 和 UITableView 控制器。
我试图在其中使用相同的背景图像,但问题是图像在 UITableView 中调整了大小。
Here你可以看到区别。
为了添加背景图片,我在 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)
我什至尝试在 XCode IB 中添加 UIView 背景图像,但没有成功。
图片是 jpg,大小为 640 X 1136。我也尝试了 png 文件,但没有运气。
欢迎提出任何建议。
【问题讨论】:
【参考方案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"]];
【讨论】:
【参考方案2】:这两种情况都可以使用colorWithPatternImage:
。
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:YOUR IMAGE"]];
【讨论】:
这可行,但它使用大量内存,远远超出您的预期。请参阅此以获取更多详细信息。 cocoaintheshell.com/2011/01/colorwithpatternimage-memory-usage以上是关于背景图片中UIView和UITableView不一致的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局强制 UITableView 中的 UIView 填满屏幕