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: > 这来自模拟器 2011-04-29 01:15:21.431 TestProject[3893:207] imageView: > 图片似乎有问题(frame = 0,0,0,0???)我也将此图片用于启动图片! 【参考方案1】:

感谢@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】:

有点晚了,但也许对于所有其他正在寻找解决方案的人来说。我可以通过在UITableViewControllerviewDidLoad 方法中使用以下代码来完成这项工作:

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 背景图片的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 不显示背景图片

UITableView 背景图片

使用图像作为 UITableView 背景;背景仍然显示黑色

内容的 UITableView 背景图像

UITableView 标题背景颜色

UITableView 背景颜色 Swift