当表格中没有行时将标签放在tableView后面

问题描述:

我正在查看iPhone上的闹钟应用程序,我发现当他们使用自定义图形作为它们的UITableViewCells的灰度渐变时,在表格中没有单元格,有一个背景,看起来类似于分组的表格视图单元格背景,并带有一个标签,表示无警报。当表格中没有行时将标签放在tableView后面

我该如何达到这个效果?目前在我的视图控制器中,我有viewController的视图,“没有警报”和tableView的标签。当我在表格中有零报警时,我只显示标签,并隐藏表格,并在有报警时显示副标识。我得到的问题是图形。

作为一项测试,如果我将表格的背景颜色更改为鲜艳的橙色,那么这个橙色会透射到我的tableViewCells中。 tableViewCells和tableView都被设置为默认的白色,而不是clearColor,然而viewController的视图透过。我错过了什么?谢谢。

+0

你究竟想要达到什么目的? – iMash 2012-04-28 06:28:17

使用XIB文件将视图的背景设置为“组表背景颜色”。我们可以将相同的背景图像设置为我们的视图。

您需要确保“No Alarms”标签是视图层次结构中最顶层的子视图。如果是这样,那么您不必担心隐藏桌面视图,也不必处理橙色/白色背景中存在的问题。

编程方式,添加标签到顶级视图看起来是这样的:

UILabel *label = [[UILabel alloc] init]; 
label.text = @"No Alarms"; 
// set the properties, autoresizing, etc... 
[label sizeToFit]; 
[self.view addSubview:label]; 

最后一行是实际添加标签到您的视图。如果您希望将标签置于视图的中心位置,则可以使用initWithFrame:而不仅仅是以这种方式初始化,您可以将它放在视图的中心。

另一个选择(如果你使用的是NIB或故事板)是创建一个“No Alarms”标签并确保它是IB物品浏览器视图的子视图层级中的最顶层子视图(我认为这就是它的原因至少要求 - 无论哪种方式,我指的是弹出菜单,您可以在视图中选择对象)。然后只要你的程序逻辑表示有和没有报警,就隐藏并取消隐藏标签。这是我可能这样做的方式......