UITableView 不显示背景图片

Posted

技术标签:

【中文标题】UITableView 不显示背景图片【英文标题】:UITableView not showing background image 【发布时间】:2011-06-22 08:05:18 【问题描述】:

我有一个带有 2 个单元格(自定义 tableviewcells)和一个用于登录的按钮的 uitableview。我以编程方式制作它们。现在我想在 2 个自定义单元格和按钮后面放置一个背景图像。我进入 IB 并将图像视图放在 tableview 的顶部,然后在上面放一张我想要作为背景的图片。然后我进入viewDidLoad并输入这段代码tblSimpleTable.backgroundColor = [UIColor clearColor];来清除tableviews的背景颜色。

现在看起来像这样:

但是背景没有出现。有谁知道如何解决这一问题?

谢谢。

viewDidLoad

  - (void)viewDidLoad 
 [super viewDidLoad];

self.dataSourceArray = [NSArray arrayWithObjects:
                        [NSDictionary dictionaryWithObjectsAndKeys:
                         @"UITextField", kSectionTitleKey,
                         @"TextFieldController.m: textFieldNormal", kSourceKey,
                         self.textFieldNormal, kViewKey,
                         nil],
                        nil];

UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
loginButton.frame = CGRectMake(60,140,200,38); // position in the cell and set the size of the button
[loginButton setTitle:@"Login" forState:UIControlStateNormal];
// add targets and actions
[loginButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
// add to a view
[self.view addSubview:loginButton];

tblSimpleTable.backgroundColor = [UIColor clearColor];
//tblSimpleTable.backgroundView = nil; 

//UIImageView *imageView = [[UIImageView alloc] initWithImage:@"Background-Red.png"];
//imageView.frame = tblSimpleTable.frame;
//tblSimpleTable.backgroundView = imageView;

self.title = NSLocalizedString(@"TextFieldTitle", @"");

// we aren't editing any fields yet, it will be in edit when the user touches an edit field
self.editing = NO;
 

【问题讨论】:

你把图片放在上面了吗?你能详细说明你是如何做到这一点的或显示一些代码吗? 首先放置 ImageView 并在该 ImageView 上,将您的标签和所有内容放入 Nib 文件中 @dragon112 + Marvin:我在 viewDidLoad 中的代码如上所示。 【参考方案1】:

为什么不使用UITableView 对象的backgroundView 属性?

UIImageView * imageView = [[UIImageView alloc] initWithImage:yourBackgroundImage];
imageView.frame = tblSimpleTable.frame;
tblSimpleTable.backgroundView = imageView;

当然,backgroundView 会在你不设置框架的情况下调整大小,所以跳过第二行也不成问题。

【讨论】:

我也要把它放在viewDidLoad 中吗?【参考方案2】:

你所拥有的应该可以解决。还是试试这个: 添加

tblSimpleTable.backgroundView = nil;  

viewDidLoad

【讨论】:

@Nitish:不幸的是,这不起作用。我看到一些帖子说他们需要将图像放入 IB - 发送到后面。但是,它不允许我这样做,因为 IB 中的 send to back 选项被禁用。你知道为什么吗?谢谢。 我认为没有必要这样做。要将图像放在表格单元格后面还是完整视图后面? @Nitish:我想将图像放在表格单元格和按钮后面。所以图像是背景,表格单元和按钮在图像上方。你知不知道怎么?谢谢。 如果要将图像放在单元格后面,那么您还应该清除单元格及其子视图的背景颜色。与您对 tableView 所做的相同。试试看。 @Nitish:是的,我试过了,但它仍然不显示背景图像。 :/。有没有另一种方式来展示它?谢谢。

以上是关于UITableView 不显示背景图片的主要内容,如果未能解决你的问题,请参考以下文章

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

移出可见的 uitableView 后,UITableViewCell 具有灰色背景

IOS优化加载图片到UITableView

UITableView - 延迟加载联系人图片

突出显示没有选择的 UITableView

将单元格添加到可见的空 UITableView 以白色背景显示