사용자 정의 UITableViewCell에서 자동 레이아웃이 무시됩니다.


92

셀의 높이를 계산하는 데 필요한 수직 요소를 포함하여 모든 요소에 제약 조건을 설정 했음에도 불구하고 자동 레이아웃은 무시되는 것처럼 보입니다. 모든 셀이 압축됩니다.

다음은 스토리 보드의 결과 및 제약 조건의 스크린 샷입니다. 여기에 이미지 설명 입력

여기에 이미지 설명 입력

tableView를 보유하는 VC에서 viewDidLoad 의 코드는 다음과 같습니다.

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

두 번째 줄을 주석 처리하면 높이가 120.0 인 셀이 제공되지만 Autolayout도 무시됩니다.

감사


최신 정보

인터페이스를 단순화하기 위해 제약 조건으로 단일 레이블을 남겼습니다.

  • 슈퍼 뷰로 이어지는 공간
  • 슈퍼 뷰를위한 최고의 공간
  • 고정 너비 및 높이 (100 및 100)
  • 셀에 높이를 결정하는 모든 수직 제약 조건이 있는지 확인하기 위해 하단 공간에서 컨테이너 여백까지

그리고이 단순화 된 인터페이스를 사용하면 자동 레이아웃이 여전히 고려되지 않습니다. 이는 문제가 잘못 설정된 제약에서 비롯된 것이 아님을 암시합니다.

크기 검사기에서 행 높이는 120으로 설정되고 사용자 정의가 선택되어 있습니다. 셀에 올바른 사용자 지정 클래스가 있고 셀 재사용 식별자가 정확합니다.


업데이트 : 솔루션을 찾았습니다.

이것은 간단한 실수였습니다. 아래 내 대답을 참조하십시오.


디버그 터미널을 확인하십시오-예상대로 작동하지 않는 것을 제안하는 NSLayoutConstraint 로그가 있습니까?
마태 복음 Hallatt

@MatthewHallatt 디버그 터미널에 아무것도 나타나지 않습니다. 감사합니다.
Kqtr

@Kqtr이 두 줄을 주석 처리 한 다음 정상적으로 한 번 실행하여 변경 사항이 있는지 확인하십시오.
Tushar Sharma

@TusharSharma 두 줄을 주석 처리하면 rowHeight 줄만 주석 처리하는 것과 같은 효과가 있습니다. 셀의 높이는 120.0이지만 자동 레이아웃은 작동하지 않습니다.
Kqtr

1
인터페이스 빌더가 누락되거나 모호한 제약 조건을 표시합니까? 작은 노란색 또는 빨간색 느낌표를 확인하십시오.
마태 복음 Hallatt

답변:


248

프로토 타입 셀과 셀의 UIView 모두 IB에서 사용자 지정 셀 클래스가 지정 되었기 때문에 자동 레이아웃이 무시되었습니다.

UIView를 UIView 클래스로 다시 설정하면 문제가 해결되었습니다.

그냥 명확하게


2
나는이 문제에 몇 시간 동안 갇혀 있었고 이것이 해결되었습니다. 감사합니다!
candidev

여기에 올 때까지 거의 하루를 허비했습니다 .... 천만에 달합니다.
Renascent

-3

문제는 당신이 구현하고 있다는 것입니다.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: 
IndexPath) -> CGFloat {

 return x
}

tableview가 셀의 자동 높이를 계산하려면이 함수를 제거해야합니다.


감사합니다. 불행히도 재정의하지 않습니다. 실제로이 tableView에 대한 델리게이트도없고 데이터 소스 만 있습니다.
Kqtr

셀의 모든 모서리에 대해 textview 제약 조건을 설정 했습니까? 그리고 textView의 스크롤을 비활성화 했습니까?
Jaafar Barek

여러 줄 레이블 (0 줄)에는 1) 왼쪽에 숫자가있는 세로 간격 2) superview까지의 상단 공간 3) superview까지의 후행 공간 및 4) Asked By 라벨이있는 하단 공간에 대한 제약이 있습니다.
Kqtr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.