2013-02-20 11 views
0

我正在平移UITableViewCell contentView,如下面的代碼。我想知道正在移動的UITableViewCell contentView背後存在什麼視圖?平移UITableViewCell時顯示的是什麼視圖?

我問的原因是因爲我想改變這個「透視圖」的顏色。我想在單元格被刷過時自定義每個tableViewCell下的顏色。例如,如果您左移第三行,則會在單元格後面看到藍色。如果你離開第四排,你會看到單元格後面的綠色。

- (void)panGestureRecognizer:(UIPanGestureRecognizer *)recognizer { 

    //... 

    if ((recognizer.state == UIGestureRecognizerStateBegan 
     || recognizer.state == UIGestureRecognizerStateChanged) 
     && [recognizer numberOfTouches] > 0) { 

     CGPoint location1 = [recognizer locationOfTouch:0 inView:self.tableView]; 
     NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location1];   
     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

     CGPoint translation = [recognizer translationInView:self.tableView]; 
     cell.contentView.frame = CGRectOffset(cell.contentView.bounds, translation.x, 0); 
    } 

    //... 
} 

我試過的一件事是創建一個UIView並將其添加到contentView後面的單元格中。這有效,但不能令我滿意。如果您將代碼添加到使用UITableViewRowAnimationLeft進行動畫刪除的動畫中,背景的顏色將與單元一起向左移動。這是有道理的,因爲當動畫移出單元格以刪除它時,我創建的背景視圖與整個單元格一起移動。我想要的行爲是讓背景顏色實際位於單元格的後面,因此當單元格在刪除動畫中移動時它不會移動。

以下代碼是我如何將一個背景視圖添加到單元格並將其放置在contentView下方。

[cell.contentView setBackgroundColor:[UIColor whiteColor]]; 

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, self.tableView.rowHeight)]; 
view.backgroundColor = [UIColor redColor]; 
[cell addSubview:view]; 
[cell bringSubviewToFront:cell.contentView]; 

回答

1

啊哈!

我發現了一個優雅和美妙的解決方案。我快樂地顫抖着。

我在cell.contentView右側添加了我想要的背景顏色的另一個視圖。現在,當您滑動單元格時,右側的SidesView會與它一起拉動,因此看起來就像是正在顯示的視圖。 (現在,如果你想把內容放在那裏,那是另一個人的另一個複雜因素......我不這樣做)我所要做的就是讓每個單元格都有不同的顯示顏色。好極了!請注意,您必須使幀長度過長(即500),以便刪除的滑動看起來正確。

這是我的代碼。

UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(320, 0, 500, self.tableView.rowHeight)]; 
label.backgroundColor = [UIColor redColor]; 
[cell.contentView addSubview:label]; 
相關問題