UITableView 背景图片
Posted
技术标签:
【中文标题】UITableView 背景图片【英文标题】:UITableView background Image 【发布时间】:2011-08-15 02:05:33 【问题描述】:我正在尝试将 png 图像设置为我的 tableview 的背景。使用以下代码一切都很好!但仅限于 iPhone 模拟器。如果我尝试在 iPhone 设备上运行应用程序,则 tableview 的背景保持白色(或清晰)。你有没有关于我尝试设置背景颜色的方式的事情。在以下之前我一直在尝试很多方法,但都有相同的问题。
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
提前谢谢你!
【问题讨论】:
这听起来像图像未复制到您的设备。[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
在设备上返回什么?请把它转储到控制台。
我认为 Nick 是对的,您可以在断点时使用调试器转储它,方法是键入:po [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]
;) clean/rebuild 可能会有所帮助。
或者只是NSLog(@"imageView: %@", [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]);
这是 NSLog 输出:2011-04-29 01:13:42.653 TestProject[573:707] imageView: 感谢@Ravin 的回答。
在 Swift 5.0 中:
let tempImageView = UIImageView(image: UIImage(named: "justin_bieber_topless.png"))
tempImageView.frame = self.tableView.frame
self.tableView.backgroundView = tempImageView;
【讨论】:
【参考方案2】:Objective-c 版本:
cell.backgroundColor = [UIColor clearColor];
另见: How to create a UITableViewCell with a transparent background
【讨论】:
【参考方案3】:UIImageView *imageviewTemp = [[UIImageView alloc] init];
[(UIImageView *)imageviewTemp sd_setImageWithURL:[NSURL URLWithString:self.stringOfPassedImage]];
[imageviewTemp setFrame:self.tableView.frame];
self.tableView.backgroundView = imageviewTemp;
【讨论】:
你在哪里设置表格视图的背景图片?你没有回答问题 原始问题中没有任何内容暗示必须从网络获取图像。此外,sd_setImageWithURL:
无法通过 UIKit 获得。【参考方案4】:
简单的 swift 版本将是
let tempImageView = UIImageView(image: UIImage(named: "yourImage"))
tempImageView.frame = self.tableView.frame
self.tableView.backgroundView = tempImageView;
【讨论】:
这是在静态表格视图上工作还是只在动态单元格上工作?因为我尝试在静态上使用它,但它不起作用【参考方案5】:一个 IBDesignable 表格视图子类,可让您从界面构建器附加图像
import UIKit
@IBDesignable
class DesignableTableView: UITableView
@IBInspectable var backgroundImage: UIImage?
didSet
if let image = backgroundImage
let backgroundImage = UIImageView(image: image)
backgroundImage.contentMode = UIViewContentMode.ScaleToFill
backgroundImage.clipsToBounds = false
self.backgroundView = backgroundImage
【讨论】:
【参考方案6】:[TableView setBackgroundView:nil];
[TableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.png"]] ];
【讨论】:
【参考方案7】:有点晚了,但也许对于所有其他正在寻找解决方案的人来说。我可以通过在UITableViewController
的viewDidLoad
方法中使用以下代码来完成这项工作:
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
或仅使用背景颜色:
self.parentViewController.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
self.tableView.backgroundColor = [UIColor clearColor];
我花了一段时间才弄明白,但现在它就像一个魅力。
【讨论】:
【参考方案8】:如果您想为背景使用图案图像,这也可以很好地工作。
UIImage *image = [UIImage imageNamed:@"something.png"];
self.tableView.backgroundView = nil;
self.view.backgroundColor = [UIColor colorWithPatternImage:image];
【讨论】:
【参考方案9】: UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
[tempImageView setFrame:self.tableView.frame];
self.tableView.backgroundView = tempImageView;
[tempImageView release];
这很完美。感谢 Jona 的 Ravin
【讨论】:
【参考方案10】:我认为这种方法更干净:
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"TableBackground.jpg"]];
self.tableView.backgroundColor = background;
[background release];
【讨论】:
你知道如何让它固定在它的位置,这样它就不会随着桌子滚动吗?并使图像从顶部开始“X”像素? 这会导致 uitableview 和 scrollview 的性能问题 在视网膜设备上使用此解决方案会导致图像拉伸。只是需要注意的事情。【参考方案11】:您的图像实际上是否命名为TableViewBackground.PNG
(注意大写)?您需要在 ios 设备上完全匹配大小写,而在模拟器中不需要完全匹配。
【讨论】:
【参考方案12】:请使用以下代码。
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
[tempImageView setFrame:self.tableView.frame];
self.tableView.backgroundView = tempImageView;
[tempImageView release];
谢谢,
【讨论】:
这让我很烦很长时间了。非常感谢! :) 这比更改 backgroundColor 更好,因为它不会在表格滚动或弹跳时重复背景。 将图像视图设置为框架实际上很糟糕,因为您正在获取表格视图的原点,它可能不为零,而图像视图可能应该始终为零原点 使用bounds
代替[tempImageView setFrame:self.tableView.bounds];
我看到了我的背景片刻,但随后背景被单元格的内容所取代。我该怎么办?以上是关于UITableView 背景图片的主要内容,如果未能解决你的问题,请参考以下文章