UITableView自定义标题(如FoodSpotting应用程序)

时间:2012-04-24 23:49:50

标签: iphone objective-c ios uitableview

enter image description here

有人可以解释这个应用程序(FoodSpotting)如何创建自定义节标题?它有一个半透明的黑色背景,用户的图像,以及一些不错的文本(毫无疑问从服务器加载)。我的两大问题是:

1。应用程序如何在节标题上获得漂亮的黑色半透明效果?  的 2。他们如何得到标题附加的小三角箭头?

我可以基于使用节标题的自定义视图来解决所有其他问题。

2 个答案:

答案 0 :(得分:22)

Section header is a UIView就像其他任何人一样。您可以根据需要使用Interface Builder创建它,如同您所希望的那样漂亮,复杂或精细,等等。您的表委托tableView:viewForheaderInSection负责返回它,就像它对其他单元格行一样。< / p>

至于小三角形:是的,这让我们失去了一点(我们想要在我们的应用程序中使用类似的东西),直到我们发现你可以通过“躺着”关于它的高度来重叠视图:ie {{1返回一个比实际值略小的值。可能不是“正确”的方式,但对我们来说非常好。像这样:

enter image description here

所以标题实际上是一个完美的矩形,大多是透明的底部,有一个小的三角形“偷看”:

enter image description here

告诉iOS标题是80px高,如下所示:

tableView:heightForHeaderInSection:

它将开始以80px绘制“食物”行。因为标题位于顶部,并且因为大多数标题底部除箭头外都是透明的,所以应该会产生这种效果。

答案 1 :(得分:2)

我以不同的方式达到了预期的效果。我没有使用tableView:viewForheaderInSection:(这对我不起作用),而是添加了一个图像视图,将箭头图像保存为标题视图的子视图,并将框架设置为标题正下方:

// Inside HeaderView.m

UIImageView *arrowImageView = [[UIImageView alloc] initWithImage:self.arrowImage];
arrowImageView.frame = CGRectMake(arrowX, frame.size.height, self.arrowImage.size.width, self.arrowImage.size.height);
[self addSubview:arrowImageView];
[arrowImageView release];

如果仔细观察,Foodspotting.app中有两个文件(follow-captionbubble-dark.png和follow-captionbubble-dark@2x.png),它们看起来与上面问题中显示的箭头完全相同。所以我猜他们可能使用了类似的技术。感谢Foodspotting团队。