2011-04-21 3 views
0

detailTextLabel이 셀 프레임의 크기에 종속되게하는 UITableViewCell이 있습니다.UITableViewCells가 중복됩니다.

이에 대한 나의 코드는 이것이다 :

if (indexPath.row == 3){ 
       NSString *text = [self getItemForKey:kRights]; 
       CGSize constraintSize = CGSizeMake(310.0f, MAXFLOAT); 
       CGSize labelSize = [text sizeWithFont:[UIFont systemFontOfSize:15] 
            constrainedToSize:constraintSize 
             lineBreakMode:UILineBreakModeWordWrap]; 
       return labelSize.height+11; 
      } 

그러나, 라벨의 크기 인 경우 인덱스 방법 인덱스 방법에서 행에 대한

cell.textLabel.text = @"Rights"; 
      cell.backgroundColor = [UIColor clearColor]; 
      cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap; 
      cell.detailTextLabel.numberOfLines = 0; 
      cell.detailTextLabel.text = [self getItemForKey:kRights]; 
      cell.textLabel.font = [UIFont systemFontOfSize:15]; 
      cell.detailTextLabel.font = cell.textLabel.font; 
      cell.textLabel.textColor = [UIColor colorWithRed:54.0f/255.0f green:54.0f/255.0f blue:54.0f/255.0f alpha:1.0f]; 
      CGSize constraintSize = CGSizeMake(310.0f, MAXFLOAT); 
      CGSize labelSize = [[cell.detailTextLabel text] sizeWithFont:[cell.detailTextLabel font] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 
      cell.detailTextLabel.frame = CGRectMake(0, 0, 310, labelSize.height); 
      cell.userInteractionEnabled = YES; 
      cell.selectionStyle = UITableViewCellSelectionStyleNone; 
      cell.accessoryType = UITableViewCellAccessoryNone; 

높이에서 행에 대한

세포 너무 커서 셀이 서로 겹칩니다. 어떻게 내가 이것을 막을 수 있는지 말해 줄 수 있니? 인덱스 방법에서 행의 높이,

http://img689.imageshack.us/i/screenshot2011042102520.png/

답변

1

은 그냥 잊어 버리셨습니까 셀의 내용의 나머지 부분을 설명하기 : 여기

는 이미지가 내 문제를 보여주는 것입니다? detailTextLabel 높이에 11 포인트를 추가하고 있습니다. 그 정도면 충분하지 않습니다. [@ "Rights"sizeWithFont : [UIFont systemFontOfSize : 15]]는 높이가 19를 반환합니다. 따라서 textLabel 높이와 textLabel & 세부 사항 사이에 남겨진 공백과 위쪽 여백 및 아래쪽 여백을 고려해야합니다. 셀 내의 다른 모든 내용을 포함합니다.

또한 스크린 샷을 통해이 특정 셀 내에서 일부 겹치는 콘텐츠가있는 것으로 보입니다. 당신은, 즉, 세포의 왼쪽 상단 모서리 (0, 0)에서 프레임의 원점을 설정

cell.detailTextLabel.frame = CGRectMake(0, 0, 310, labelSize.height); 

: 그것은 당신이 detailTextLabel에 대해 설정하는 프레임의 결과 일 수있다. 그러면 detailTextLabel이 셀의 textLabel과 겹치게됩니다.

희망이 있으면 도움이됩니다.

+0

프레임을 다음과 같이 설정했습니다. cell.detailTextLabel.frame = CGRectMake (0, cell.textLabel.frame.origin.y + 5, 310, labelSize.height); 그러나 그것은 변화를 가져 오지 않았습니다. 또한, 11 포인트는 텍스트 라벨 및 나머지 내용의 적용 범위입니다. –

+0

새 프레임이 올바르게 보입니다. '권리'라는 단어 (예 : textLabel)가 다른 텍스트와 겹치는 것으로 보입니다. 텍스트가 detailTextLabel과 겹치거나 다른 셀의 내용입니까? –

+0

\t [@ "Rights"sizeWithFont : [UIFont systemFontOfSize : 15]] 및 높이 19.0을 반환했습니다. 이는 textLabel에 대해 11 점 이상을 필요로 함을 의미합니다. –

관련 문제