2012-04-21 65 views
1

我有一個分組樣式的UITableView。在tableView中,我將行排列成段,因爲段的行數是可變的。但是,我選擇將所有部分放在一起(出於UI原因),以使它們看起來像一個具有多個(可展開)行的大部分。UITableViewCell選擇區 - 如何填充整個單元格的UITableView分組的頂部/底部單元?

我遇到的問題是,我想在每個部分的頂部和底部行選擇區域填滿整個細胞 - 換句話說,不要有圓角。

我知道,一個普通的tableview有細胞充分的選擇,但我可以從分組的tableview到普通的tableview因爲有其他不良後果不會改變。

我明白如何掩蓋單元格的selectedBackground以使其具有圓角(如果它尚未具有它們),但我一直未能找到一種方法來「頂住」頂部和底部單元格的角部分。我爲每個部分的底部行創建了虛擬行,雖然它很乏味,但似乎可行;但是我不能爲頂行做一個虛擬行,因爲它會使分隔線太厚。

是否有可能在分組的UITableView中「頂部」/「底部」部分行的選擇區域?

編輯補充解答: 下面的代碼與我的自定義背景視圖工作:

cell.selectedBackgroundView.bounds = cell.bounds; 

無論各部分的頂部或底部電池的「形狀」,如由自定義背景圖中確定,選擇樣式使用上面的代碼與「形狀」匹配。這並不一定會擺脫本身的圓角,但如果我將某個部分的頂部或底部單元格設置爲「中間樣式」單元格背景視圖(無角),則會根據需要選擇整個單元格。

回答

0

可能有點晚了,但這裏是我做過什麼:

首先根據需要設置你的背景圖,然後設置單元格選擇背景圖(以相同的邊界單元格背景爲)

您可以指定cornerRadius屬性,這樣就可以根據需要設置磨圓棱角,我已經在我的情況

這裏省略這個屬性的代碼都:

 UIView *bg = [[UIView alloc] initWithFrame:cell.bounds]; 
     bg.backgroundColor = [UIColor colorWithRed:0.980 green:0.988 blue:0.984 alpha:1]; 
     bg.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor; 
     bg.layer.borderWidth = kCellBorderWidth; 
//  bg.layer.cornerRadius= kCellBorderRadius; 
     cell.backgroundView = bg; 

     // to make cell selection square and not round (which is by default) 
     UIView *bg_selected = [[UIView alloc] initWithFrame:cell.bounds]; 
     bg_selected.backgroundColor = [UIColor lightGrayColor]; 
     bg_selected.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor; 
     bg_selected.layer.borderWidth = kCellBorderWidth; 
     cell.selectedBackgroundView = bg_selected; 
1

將QuartzCore框架導入到您的項目中。 #進口到您的tableViewController和使用下面的代碼...

>>>編輯..

myTableView.layer.cornerRadius=0.0; 

//或使用您的tableView:的cellForRowAtIndexPath:

cell.backgroundView = [[[UIView alloc] initWithFrame:cell.bounds] autorelease]; 

Square corner tableview

Sample code and tutorial for Square corner in grouped tableview

希望,這將幫助你......

+1

感謝您的回答,但這並沒有改變任何東西,只要選擇。但請欣賞答案。 – SAHM 2012-04-21 02:03:45

+0

我編輯了我的答案..看看是否會幫助你...享受.. – Nit 2012-04-21 02:11:23

+0

我試過你編輯的答案,並沒有改變單元格的selectedBackground區域。此外,我檢查了鏈接,似乎他正在添加圓角而不是刪除它們;我可以用蒙版移除圓角,但不知道如何將缺失的角部添加回來。 – SAHM 2012-04-21 02:13:12

0

您可能能夠創建一個自定義的UITableViewCell,設置它,使它不夾子視圖,並覆蓋「的setSelected:動畫」單元格的方法來顯示您自己的選擇區域。這是我能想到的唯一的事情。爲什麼你不能使用普通的UITableView?

+0

@Michael_Frederick我有幾個原因不能使用普通的tableview,但我現在能想到的主要原因是分隔線超出了分組tableview的範圍,爲了擺脫它們,我會需要將separatorStyle設置爲none,實際上我需要有一個分隔符樣式。我知道我可以使用自定義繪製的selectedBackgroundView - 我使用的是自定義繪製的selectedBackground - 但就性能和試圖保持標準選擇樣式而言,我希望儘可能填充整個單元格。 – SAHM 2012-04-21 02:07:48

相關問題