2014-09-08 4 views
2

셀이 포함 된 uitableview가 있습니다. 나는 세포의 z 순서를 조절하는 방법을 알아 내려고 노력하고있다. enter image description hereUITableViewCell Z-Order

을하지만이있는 tableview를로드 할 때이 얻을 : 나는 이것을 만들려고 노력하고 enter image description here

이미 [tableView sendSubViewToBack:cell]을 시도했습니다. 또한 맨 아래로 스크롤 한 다음 맨 위로 돌아 오면 결과는 그림 1과 비슷하지만 아래로 스크롤하면 결과가 그림 2와 같습니다. 귀하의 도움에 감사드립니다.

static NSString *CellIdentifier = @"Cell"; 
NSString *row = [NSString stringWithFormat:@"%li",(long)indexPath.row]; 
GetMoreTableViewCell *cell = [_chapters dequeueReusableCellWithIdentifier:CellIdentifier]; 
NSMutableDictionary *deckCategory = [[_data valueForKey:key] valueForKey:row]; 

if (cell == nil) { 
    cell = [[GetMoreTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 


[tableView bringSubviewToFront:cell]; 

if([[[_data valueForKey:key] valueForKey:[NSString stringWithFormat:@"%i",indexPath.row]] valueForKey:@"isDefault"] == [NSNumber numberWithBool:YES]) { 
    cell.addButton.hidden = YES; 
} 
cell.ttitle.text = [[[_data valueForKey:key] valueForKey:row] valueForKey:@"Name"]; 
cell.backgroundColor = [UIColor clearColor]; 
cell.selectionStyle = UITableViewCellSelectionStyleNone; 
CALayer * l = [cell.cellImage layer]; 
[l setMasksToBounds:YES]; 
[l setCornerRadius:10.0]; 

CALayer * b = [cell.cellBackground layer]; 
[b setMasksToBounds:YES]; 
[b setCornerRadius:19.0]; 
cell.cellImage.image = [UIImage imageNamed:[deckCategory valueForKey:@"Image"]]; 

if(indexPath.row == 0) { 
    cell.cellBackground.image = [UIImage imageNamed:@"card_green.png"]; 
} 
else if(indexPath.row == 1) { 
    cell.cellBackground.image = [UIImage imageNamed:@"card_orange.png"]; 
} 
else if(indexPath.row == 2) { 
    cell.cellBackground.image = [UIImage imageNamed:@"card_red.png"]; 
} 

return cell; 
+0

코드를 표시 할 수 있습니까? – ChenSmile

+0

예, 현재 코드로 게시물을 업데이트했습니다. –

+0

컬렉션보기 사용을 고려하십시오. – Fattie

답변

0

불행하게도 cellForRow ...가 호출되는 순서를 제어 할 수 없으므로 셀을 뒤쪽 또는 앞쪽으로 보내면 처리하지 않습니다.

테이블의 보이는 셀을 통과하고 인덱스 경로에 따라 재정렬 된 메서드를 만들어야하지만, 사용자가 제어 할 수없는 뷰를 망칠 수 있습니다. 테이블 뷰는 언제든지 하위 뷰를 재 배열하거나 추가 할 수 있으며 이러한 모든 이벤트를 포착하려고합니다.

나는 사용자 정의 레이아웃을 사용하여 각 indexPath에 대해 z 위치를 지정할 수있는 테이블 뷰 대신 콜렉션 뷰을 사용하여 이와 같은 뷰를 구현하고 다양한 셀 양. 사용자 정의 레이아웃을 만드는 것은 매우 간단합니다. 특히 테이블 유형 레이아웃의 경우 더욱 그렇습니다.

2

tableView:cellForRowAtIndexPath: 데이터 소스 메서드에서 cell.layer.zPosition = CGFloat(indexPath.row)과 같이 셀 레이어의 z 위치를 변경하면 작동합니다. 그리고 셀에 대해 clipsToBound 속성을 false로 설정하는 것을 잊지 마십시오.

+0

이 작동하지 않습니다. – Fattie