2012-04-24 82 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團隊。