2011-03-08 1 views
4

코드를 통해 만든 사용자 지정 UITableViewCell이 있습니다 (Interface Builder가 아님). 셀의 너비에 의존하는 하위 뷰가 있습니다. 레이블은 항상 셀의 오른쪽 가장자리 안에 있어야합니다. 셀이 그룹화 된 테이블보기로 나타납니다.그룹화 된 사용자 지정 셀에 대해 UITableViewCell 너비를 결정하는 올바른 방법은 무엇입니까?

원래 iPhone에서 작동하도록 값을 하드 코딩 했었지만 지금은이 앱을 유니버설 바이너리로 변환하고 있습니다. 하드 코드 된 숫자는 iPad의 그룹화 된 테이블보기로 출력됩니다.

셀의 너비를 가져 오는 적절한 방법이 있습니까? 프레임은 전체 화면 너비를 반환하여 제 라벨을 제 위치에서 벗어납니다. 아니면 iPhone과 iPad 용으로 두 세트의 값을 하드 코딩해야합니까?

의견을 보내 주시면 대단히 감사하겠습니다.

답변

9

셀의 contentView 하위 뷰에서 적절한 치수를 가져올 수 있어야합니다. 그러나 일반적으로 크기를 설정하고 하위보기에서 자동 크기 조정 마스크를 사용하면 특정 너비가 끝나는 셀이 올바르게 표시됩니다.

+1

감사합니다. 내 문제였습니다. 내 계산을 위해 cell.contentView.frame 대신 cell.frame을 사용하고있었습니다. – SeanR

0

아무 것도 나를 위해 작동하지 않는 것; 왼쪽 가장자리 (20px in iPhone)에 대한 그래픽이있는 xib에 정의 된 사용자 정의 셀이 iPhone에서 잘 보입니다. 그러나 iPad에서 그래픽은 왼쪽 그룹화 된 섹션 경계를 겹치고있었습니다! 이 문제를 해결하려면 난 다음, 이미지에 수평 공간 제약 (선도)에 출구를 설정있는 UITableViewCell 하위 클래스에 대한 코드에 있음을 쥐게 : 간격이 바로 때까지

- (void)setFrame:(CGRect)frame { 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
     self.leadingSpaceConstraint.constant = 40; 
    } 
    [super setFrame:frame]; 
} 

그리고 수를 바이올린. :)

나는이 코드를위한 이상적인 장소가 아니었지만 setFrame을 실현했다. 그러나 그것은 그대로 남았다.

관련 문제