2011-11-29 47 views

回答

2

只要看看這個鏈接是否可以幫助你。

Changing border color in iPhone UITableView cells (non-grouped)

我認爲它已經解決了你指的是同樣的問題。

+0

您發佈的鏈接提及如何設置分隔符顏色,這是我已經在做的事情(這就是我在該圖像中獲得紅色的方式)。分組表格單元具有兩種邊框顏色:分隔符顏色,還有別的東西。這是我試圖發現的「別的東西」。 –

5

白色是因爲分隔符樣式設置爲單線邊緣。如果將其更改爲單線,白線將消失。不知道這是否能解決您的問題,但我認爲如果不做更多的工作,就不會改變顏色。

+0

是的,我知道這一點。但是我認爲這種東西本該在iOS 5中定製,而不需要大量的黑客入侵。 –

4

嘗試爲單元格製作「線視圖」。所以在的cellForRowAtIndexPath:方法只是添加到您需要的細胞:

UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, 1)] autorelease]; 
lineView.backgroundColor = [UIColor whiteColor]; 
lineView.autoresizingMask = 0x3f; 
[cell.contentView addSubview:lineView]; 

,將白線添加到每個單元的頂部。如果你不想要它的第一行添加一個if語句:

if (indexPath.row != 0) 
{ 
    UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, 1)] autorelease]; 
    lineView.backgroundColor = [UIColor whiteColor]; 
    lineView.autoresizingMask = 0x3f; 
    [cell.contentView addSubview:lineView]; 
} 

希望它有幫助。

+0

其實我說的是每個單元底部的白線,包括彎曲的邊框。所以自己畫一條線不會完全割斷它;我還需要繪製曲線,並在單元格後面以某種方式繪製它。 –

+0

使用神奇數字進行autoresizingMask是程序員不應該做的事情。有命名常量來做到這一點。 – Sulthan

0

你不能。

這個內置的繪圖是針對分組式的tableView,並且不能改變(據我所知...)

有一個變通方法,以這個(我們使用 - >對不起沒有源代碼),但我想你不會喜歡它:

1 /有每個單元格的位置信息 2 /根據其位置重新繪製每個單元格的背景(所以你必須保存此位置:FirstCell,MiddleCell,LastCell)重現t他分組了tableView的樣子。

辦法做到這與CoreGraphics

從你的子類CellGroupedBackgroundView(或customGroupedTableViewCell,根據您選擇的設計)創建2個幾乎相同CAShapeLayers。每個分隔符的顏色。並且將這些顏色公開爲您的CellGroupedBackgroundView的屬性。

您根據您所設定的位置財產這些層的路徑(只使用中間細胞CGPathAddLineToPoint,並CGPathAddArcToPoint的第一和最後一個單元格)設置

上一個普通的UITableView創建的自定義backgroundView

2 /使用,根據其indexPath設置每個單元格的'位置'...

祝你好運:)

1

您試圖更改默認iOS的用戶界面,但變化非常複雜,不能用默認屬性來完成。

解決方案是什麼?只需刪除由UITableVie繪製的線條(將顏色設置爲[UIColor clearColor])並自定義UITableViewCell背景。

當然,你需要3種類型的背景 - 在第一個單元格,在最後一個單元和中間的:


- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath (NSIndexPath*)indexPath { 
    UITableViewCell* cell = [...]; 

    UIView* background; 

    if (indexPath.row == 0) { 
     background = [...]; //background for the first cell 
    } 
    else if (indexPath.row + 1 == [self tableView:tableView numberOfRowsInSection:indexPath.section]) { 
     background = [...]; //background for the last cell 
    } 
    else { 
     background = [...]; //background for the middle cells 
    } 

    cell.backgroundView = background; 
} 

的問題是如何建立的背景。通常我只是使用UIImageView或幾個UIImageView的組合(圓角作爲一個圖像,線作爲可複製的圖像)。