Iphone UITableView背景图像

Iphone UITableView背景图像,iphone,uitableview,background,background-color,Iphone,Uitableview,Background,Background Color,我正在尝试设置一个png图像作为我的tableview的背景。使用下面的代码,一切都很好!但仅限于iPhone模拟器。如果我尝试在iPhone设备上运行应用程序,tableview的背景将保持白色(或清晰)。你觉得我设置背景色的方式怎么样。我一直在尝试很多方法,直到下面,但都有相同的问题 self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.opaque = NO; self.tableView.backgro

我正在尝试设置一个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 *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView;
[tempImageView release];

谢谢,

您的图像是否实际命名为
TableViewBackground.PNG
(注意大写)?您需要在iOS设备上精确匹配案例,而不需要在模拟器中精确匹配。

我认为这种方法更简洁:

UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"TableBackground.jpg"]];
self.tableView.backgroundColor = background;
[background release];

这很好用。多亏了Jona的Ravin

,如果您想使用图案图像作为背景,这也可以非常好地工作

UIImage *image = [UIImage imageNamed:@"something.png"];
self.tableView.backgroundView = nil;
self.view.backgroundColor = [UIColor colorWithPatternImage:image];

有点晚了,但可能其他人都在寻找解决方案。我可以在
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];

我花了一段时间才弄明白这一点,但现在它工作起来很有魅力。

一个IBDesignable tableview子类,可以让您从interface builder附加一个图像

[TableView setBackgroundView:nil];
[TableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.png"]] ];
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
            }
        }
    }

}

简单的swift版本将是

let tempImageView = UIImageView(image: UIImage(named: "yourImage"))
tempImageView.frame = self.tableView.frame
self.tableView.backgroundView = tempImageView;
目标-c版本:

cell.backgroundColor = [UIColor clearColor];
另请参见:
谢谢@Ravin的回答

在Swift 5.0中:

    let tempImageView = UIImageView(image: UIImage(named: "justin_bieber_topless.png"))
    tempImageView.frame = self.tableView.frame
    self.tableView.backgroundView = tempImageView;

这听起来像是图像没有复制到您的设备上。
[[UIImageView alloc]initWithImage:[UIImageName:@“TableViewBackground.png”]]的作用是什么在设备上返回?请将其转储到控制台。我认为Nick是对的,您可以在中断时使用调试器转储它,方法是键入:
po[[UIImageView alloc]initWithImage:[uiImageName:@“TableViewBackground.png”]
;)清理/重建可能会有所帮助。或者只需
NSLog(@“imageView:%@,[[UIImageView alloc]initWithImage:[UIImageNamed:@“TableViewBackground.png]”)这是NSLog输出:2011-04-29 01:13:42.653测试项目[573:707]图像视图:这是来自模拟器2011-04-29 01:15:21.431测试项目[3893:207]图像视图:它似乎与图像有问题(帧=0,0,0,0??)我也使用此图像作为发射图像!这让我烦了很久了。非常感谢!:)这比更改backgroundColor要好,因为当表格滚动或反弹时,它不会重复背景。将imageview设置为帧实际上是错误的,因为您使用的是表格视图的原点,该原点可能为非零,虽然图像视图可能应该始终为零原点,但请使用
bounds
而不是
[tempImageView setFrame:self.tableView.bounds]我看了一会儿我的背景,然后背景被单元格的内容所取代。我该怎么办?你知道怎么把它固定在它的位置上,这样它就不会随着桌子滚动了吗?并且使图像从顶部开始“X”像素?这将导致uitableview和ScrollView上的性能问题在视网膜设备上使用此解决方案会导致图像拉伸。只是一些需要注意的东西。您在表视图的什么位置设置背景图像?您没有回答问题原始问题中的任何内容都不表示必须从网络中获取图像。此外,
sd\u setImageWithURL:
无法通过UIKit获得。这是在静态表视图上工作还是仅在动态单元格上工作?因为我尝试在静态上使用它,但它不起作用
cell.backgroundColor = [UIColor clearColor];
    let tempImageView = UIImageView(image: UIImage(named: "justin_bieber_topless.png"))
    tempImageView.frame = self.tableView.frame
    self.tableView.backgroundView = tempImageView;