2012-03-10 68 views
1

是否有任何可能的方法將UIImageView設置爲分組UITableView中的部分的背景(比方說第3節)? 我不是在問關於viewForHeaderInSection'因爲我嘗試過但沒有按預期工作。 非常感謝...將ImageView設置爲分組的uitableview中的部分的背景

+0

當你說某個部分的「背景」時,這是否意味着你要在一個部分中設置單元格的背景,或者在部分後面設置tableview的背景? – isaac 2012-03-10 14:47:45

+0

第二個.. – JAHelia 2012-03-10 14:52:27

回答

0

如果您的表只有一個部分使用myTable.tableHeaderView = customHeaderView

viewForHeaderInSection如果您沒有返回類型爲UIView的對象或您的方法中的子類,則可能無法工作。將viewForHeaderInSection方法中的一些代碼添加到您的問題中,以獲得更準確的答案。

編輯 -如果viewForHeaderInSection didn't work as expected,你的意思是,頭球攻門被剪輯,則這可能是因爲你還沒有已實現了以下方法:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 

如果不執行,每個部分的高度設置到iOS默認值。

+0

viewForHeaderInSection沒有按預期工作(我已經更新了上面的問題文本),它返回一個uiview,但它不會像預期的那樣實現。 – JAHelia 2012-03-10 15:37:00

2

我的猜測是,如果你想得非常有創意,你可以想出一個方法來實質上交換UITableView的backgroundView屬性,因爲不同的部分是可見的。這不會讓我覺得特別優雅,因爲多個部分可能一次佔據可見的屏幕,但也許我不明白這個問題。

簡短的回答是,沒有一個定義/簡單的方法來實現這一點。一個部分的組合遠離UITableView的背景,實質上該體系結構沒有爲你想要的設置。我不會假設知道你的實現的細節,但我也要警惕:UITableView的視覺和體系結構特徵是相當考慮周全的。我個人的觀點(再次,我沒有看到你的工作),是在不同的部分背景可能壓倒在許多情況下的用戶體驗。如果正確執行,我還可以看到它可能是很好的UI touch。

在這種情況下,如果你仍然想這樣做,這裏是我採取的方法:

基本上你要注意你的tableview的單元格的位置。你可以在scrollViewDidScroll或tableViewWillDisplay單元格或其他地方做到這一點,我敢肯定。但是你需要知道哪些單元格在屏幕上和屏幕上滾動,然後你需要能夠詢問最上面可見的單元格是什麼。一旦你確定了你應該顯示的部分,你可以使用它來滾動你自己的代表每個部分背景的視圖。基本上,你要在代碼中創建每個動態節背景視圖,只需要將UIView的背景視圖設置爲重複模式(顯然,高度將是動態的)。將所有的節背景子視圖(或者最好是懶惰地)添加到你的UITableView的backgroundView中。

現在,隨着滾動視圖的滾動,您將觀察哪些行和部分進出了表格視圖。當部分中的行滾動時,計算部分背景的高度(將部分中的行數乘以其高度),並調整它的座標軸,但由您的tableView的backgroundView截取。當部分滾動時,您將更新相關部分背景視圖的Y偏移量。唷!

另一個想法可能是折騰你的所有部分背景視圖,垂直佈置在UIScrollView中,禁止用戶交互。將滾動視圖放置在您的表視圖的backgroundView中,然後找出數學實質上是從tableview的滾動視圖到背景滾動視圖的「前進」滾動事件。

這可能需要一些工作來找到一個實現,以保持動畫的順暢和同步,但是,這是我認爲可以實現的一種方法。

+0

感謝您的解釋,我的實現只是一個動態區段創建的分組表格視圖(每個區段都有動態數量的單元格),每個區段都必須有一個背景圖片,這將極大地增強頁面的外觀和感覺。 – JAHelia 2012-03-10 15:40:03

+0

沒問題,祝你好運! – isaac 2012-03-10 15:55:55

+0

在答案中查看新的方法建議。 – isaac 2012-03-10 16:43:12

0

創建一個自定義headerView,看起來像這樣。

.H

@interface CustomViewForHeader: UIView 
@end 

.M

#import "CustomViewForHeader.h" 
@implementation CustomViewForHeader 

-(id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 

if (self != nil) { 
    UIImageView *bgImage = [[UIImageView alloc]initWithFrame:self.frame]; 
    bgImage.image = [UIImage imageNamed:@"bill_headerBg.png"]; 
    [self addSubview:bgImage]; 
} 
return self; 
} 
@end 

這樣使用它:

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

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section { 
    CustomViewForHeader *customView = [[CustomView alloc]initWithFrame:CGRectMake(0,0,320,50)] 
    return customView; 
} 
+0

此視圖將只覆蓋標題區域,它不會覆蓋整個區域,並根據單元格數量給出區段高度的動態... – JAHelia 2012-03-11 07:26:21

0

我記得一些事情的方法來找到每個部分的矩形。有了這些,你可以將適當大小的圖像放在表格視圖下面的滾動視圖中。

除此之外,您可以將背景圖像放入單元格本身的背景中。當tableview調用給定部分的單元格時,可以選擇合適的圖像或圖像拼貼。

相關問題