나는 며칠 동안이 질문에 좌절감을 나타 냈습니다. UITableViewCell에 UILabel을 추가하려고합니다. 나는 UILabel이 셀의 전체 너비에 걸쳐, 외모를 위해 오른쪽과 왼쪽 모두에서 5 또는 10을 빼기를 원합니다. 내 문제는 프로그래밍 방식으로 레이블을 배치 할 셀의 프레임 크기를 결정하는 것입니다. 어떤 UITableViewStyle을 사용하든 상관없이 cell.contentVew.frame.size.width 값은 셀 프레임 자체의 너비에 가깝지 않습니다.UITableViewCell 프레임 검색
CGRectMake(10, 12, 397, self.contentView.frame.size.height);
그러나 그것의 :
예를 들어, 내가 건설하고있는 테이블에, 나는에 의해 (단지 시행 착오를 통해)있는 UITableViewCell을 서브 클래스 및 수동으로 결정 폭의 UILabel의를 만들어 내 원하는 결과를 얻을 수 있습니다 그 397 번호는 나를 괴롭 히고. 프로그래밍 방식으로 어떤 너비 테이블이나 스타일에 맞게 결정해야합니다. 이것은 셀의 전체 프레임 너비를 결정한 다음 UILabel의 가장자리가 실제로 셀의 가장자리에 닿지 않도록 10 또는 20을 뺀 간단한 프로세스 여야합니다. 나는 다음 시도 UITableViewStyleDefault에 tableViewStyle을 설정 한 경우
그러나 :
NSLog(@"Width: %f", self.contentView.frame.size.width);
을 내가 다른 세 가지 스타일 중 하나에 스타일을 설정하면 내가 320를 얻을 반환 된 수는 심지어 320 302입니다 숫자는 셀 프레임의 너비에 가깝지 않습니다 (내 수동으로 결정된 397의 숫자와 마찬가지로).
액세스 할 필요가있는 값은 셀의 그리기 프레임의 전체 너비를 반환합니다. 나는 대부분의 어려움을 겪는 문제들과 마찬가지로 해결책이 나를 이마에 때 리고 싶어 할 것이지만, 지금 나는 그것을 준비하고있는 시점에 이르렀다.
편집 세부 정보 :
관심있는 사람에게 하나의 설명. 이 내 질문은 주로 그룹 스타일 테이블과 관련이 있습니다.
CGFloat cellWidth = [tableView rectForRowAtIndexPath:indexPath].size.width;
의 I는 데 문제 rectForRowAtIndexPath 방법은 세포가있는 프레임의 폭을 반환한다는 것입니다 : 일반 스타일의 경우, 위의 제 질문에 대답하여 cellForRowAtIndexPath 방법으로 간단하게 측정 할 수 그 이유는 셀 너비가 프레임의 전체 너비이기 때문에 일반 스타일 테이블에서는 괜찮습니다. 그러나 그룹화 된 테이블에서 셀의 너비는 그릴 프레임의 너비보다 작으므로이 메서드는 셀 너비보다 약간 넓은 숫자를 반환합니다. 그룹화 된 표 스타일의 셀 너비가 표 프레임 너비보다 작은 고정 숫자 일 수 있으므로 문제를 해결하는 방법이 될 수 있습니다. 나는 그 사건을 조사 할 것이고 여기에 내 자신의 질문에 대답 할 것이다.
위대한 질문 나는 똑같은 행동을 취하고 나를 괴롭힌다. 내 해결 방법은 프레임 크기를 고려하지 않고 하위 뷰 너비를 콘텐츠보기 크기의 백분율로 참조하는 것입니다.콘텐츠 뷰 프레임이 액세서리 (이동, 삭제, 공개 등) 용으로 예약 된 셀의 왼쪽과 오른쪽 영역을 제외하지만 셀 프레임이 항상 잘못된 크기를보고하는 이유에 대한 대답은 아직 확실하지 않습니다. . 희망을 갖고 누군가가 와서이 모든 것을 이해하게 될 것입니다. – Rog
가로 모드입니까? –
@Bartosz - 예를 들어 초상화에서 숫자를 얻습니다. – Chris