2013-02-20 2 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

AH HA!

나는 이것에 우아하고 멋진 해결책을 발견했습니다. 나는 기쁨에 떨고있다.

원하는 배경색으로 cell.contentView 오른쪽에 다른보기를 추가했습니다. 이제 셀을 스 와이프하면 오른쪽 사이드 뷰가 끌어 당겨 져서 노출 된 뷰처럼 보입니다. (이제 당신이 거기에 콘텐츠를 넣고 싶다면 그것은 다른 사람을위한 또 다른 합병증입니다 ... 나는 그렇게하지 않습니다.) 내가하고 싶었던 것은 각 세포가 다른 밝혀내는 색을 가질 수있게하는 것이 었습니다. 예! 삭제할 스 와이프가 올바르게 보이도록 프레임을 추가로 길게 (예 : 500) 만들어야합니다.

여기 내 코드가 있습니다.

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