2014-01-09 46 views
3

我試圖用部分填充顏色的行來實現表格。實質上,我希望功能可以填充我的UITableViewCell的背景顏色達到一定的百分比。使用UITableViewCell繪製條形圖 - 可變部分填充顏色的單元格

以下是我想要創建的UITableViewCells類型的圖像。在圖像可以看到,第一行是完全填滿,第二排是在75%左右,第三行是在20%左右,依此類推......

desired effect

我有在這種方法做了一些修改,但沒有成功:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

我試過了什麼?我試圖在每個單元格的內容視圖中添加一個子視圖。子視圖將是一個背景色,而實際的單元格將是一個清晰的顏色。下面是我嘗試一段代碼,創建可填充了75%的細胞:

cell.backgroundColor = [UIColor clearColor]; 
int fillWidth = (75/100) * cell.frame.size.width; 

CGRect rect = CGRectMake(0, 0, fillWidth, cell.frame.size.height); 
UIView * view = [[UIView alloc] initWithFrame:rect]; 
view.backgroundColor = [UIColor purpleColor]; 
[cell.contentView addSubview:view]; 

//... 

return cell; 

不幸的是,這似乎並沒有使細胞呈現的方式進行任何更改。

我怎樣才能達到每個表格行的部分顏色效果(如上圖所示)?

+0

您是手動(編程)設置「進度」,還是想將其顯示爲「UIProgressBar」? – n00bProgrammer

+0

http://www.raywenderlich.com/21842/how-to-make-a-gesture-driven-to-do-list-app-part-13 –

+1

另外,嘗試使用'float's,而不是'int這樣的分歧。 – n00bProgrammer

回答

7

我覺得你被劃分2個整數,並期待雙,基本上這個問題的答案是0嘗試使用75.0/100.0

我忘了另一件事提,變量的CGRect預計類型是CGFloat的,您使用的是一個int,所以你必須修復過

CGFloat fillWidth = (75.0/100.0) * cell.frame.size.width; 
+5

此外,您需要在單元格的「prepareForReuse」方法中刪除添加的子視圖('[cell.contentView addSubview:view];'),或者在故事板的單元格中添加視圖並設置該視圖的寬度。否則,每當單元格被重用時(即當表格滾動時),它將只是另一個子視圖。 – bobnoble

+0

謝謝!這似乎解決了我的問題。現在我看到單元格分隔符時遇到問題,但我會嘗試一下。 – Bitwise

1

我能想到的最好的辦法是子類的定義UITableViewCell並添加UIProgressView和標籤一樣

@interface UIProgressCell : UITableViewCell { 
    UILabel *cellItemName; 
    UIProgressView *cellItemProgress; 
} 

@property (nonatomic, retain) UILabel *cellItemName; 
@property (nonatomic, retain) UIProgressView *cellItemProgress; 

定製進度條,如背景顏色和其他

相關問題