2012-04-24 55 views
8

enter image description hereUITableView的自定义标题(如FoodSpotting APP)

有人能解释这个应用程序(FoodSpotting)如何创建他们的自定义节头?它具有半透明的黑色背景,用户图像和一些漂亮的文本(毫无疑问,从服务器加载)。我在这里的两个大问题是:

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

我几乎可以根据使用节标题的自定义视图找出其他一切。

回答

22

Section header is a UIView就像任何其他。您可以根据需要使用Interface Builder来创建它,如同复杂或精心设计,如果您愿意,可以使用Interface Builder等。您的表代理的tableView:viewForheaderInSection负责将其返回,就像其他单元行一样。对于小三角形:是的,这让我们有点儿(我们想要类似的东西在我们的应用中),直到我们发现你可以通过“说谎”它的视图重叠视图的高度:即tableView:heightForHeaderInSection:返回比实际值略低一些。可能不是“正确”的方式,但对我们来说工作得非常好。就像这样:

enter image description here

所以头实际上是一个完美的长方形,大多是看穿在底部,有一个小三角“偷看”了:

enter image description here

告诉iOS设备标题是80px高,像这样:

- (CGFloat) tableView:(UITableView *) tableView 
    heightForHeaderInSection:(NSInteger) section { 
    return 80; 
    } 

它会开始在80px处绘制“食物”行。由于标题在顶部,并且由于大多数标题底部除了箭头外都是透明的,因此您应该获得此效果。

+0

我完全理解你的答案Q1,但你能否充实你对小三角问题的回答?我真的不知道如何重叠的意见会给你一个三角形...谢谢 – Apollo 2012-04-25 00:01:08

+0

部分标题基本上只是一个视图,所以你可以绘制任何你心中的愿望,包括三角形。你可以让自己很难,用Quartz 2D(drawRect :)绘制,或者在Photoshop中制作一个三角形,然后在标题视图中添加一个UIImage,比如标签,更多图像等。 – runmad 2012-04-25 00:03:28

+0

@ derek.lo这可能只是标准的后退按钮,但具有不同的颜色。将它与其他后退按钮进行比较。 – ThomasW 2012-04-25 00:03:56

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中有两个文件(following-captionbubble-dark.png和[email protected]),与上述问题中的箭头完全相同。所以我猜他们可能会使用类似的技术。荣誉给Foodspotting团队。