내가 만들고있는이 iOS 8 응용 프로그램에서는 tableview가 있으며 자체 크기 조정이 필요합니다. 자동 레이아웃을 사용하여 구현하고 작동합니다. 거의. 여기 보이는 방법이 있습니다.자체 크기 조정 UITableViewCell 안에 여러 UILabels
는 셀 내부에 3 개 라벨이 있습니다. lorem ipsum 텍스트가있는 주 레이블. 자막은 숫자 문자열을 가지고 있습니다 (두 개의 별도 레이블입니다. 동일한 색상을 사용하기 때문에 혼동 스러울 수 있습니다.) 그런 다음 작은 검은 색 텍스트가있는 세 번째 레이블.
첫 번째 레이블 자체가 문제없이 올바르게 크기가 조정되고 그에 따라 두 번째 레이블이 위아래로 이동합니다. 그러나 문제는 세 번째 작은 레이블입니다. 보시다시피, 모든 텍스트에 맞게 크기가 조정되지 않습니다.
이제 이상한 일이 발생했습니다. 나는 그것을 가로로 돌리고 여기있다.
공간 라벨이에 가정 전체 텍스트를 표시하고이 있기 때문에. 벌금. 그런 다음 초상화로 되돌립니다.
지금 작은 레이블 모든 텍스트에 맞게 자체적으로 크기가 조정했지만 그것은 세포의 경계를 오버 플로우. 나는 세포를 더 크게 만들려고했으나 효과가 없었다. 이것은 셀을 셀 사이징하는 것이므로 올바른 방법이라고 생각하지 않습니다.
내 자동 레이아웃 제약 조건에서도 오류 또는 경고가 표시되지 않습니다.
나는 viewDidLoad()
방법 코드의 두 라인을 설정했습니다.
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
아무도 내가 여기서 잘못하고있는 것일 수 있습니까?
그냥 이미지를보고 대답하기가 어렵고 위의 코드 조각 옆에 게시 할 코드가 더 이상 없기 때문에 문제가있는 실행 가능한 Xcode 프로젝트를 업로드했습니다 here. (사용자 정의 셀이 2 개 있습니다. 기본적으로 두 번째 셀에서 높이가 증가한 동일한 셀이 있습니다.)
자동 레이아웃 제약으로 인해 작업 해본 결과이 작업을 수행하지 못했습니다. 어떤 도움을 주시면 감사하겠습니다.
감사합니다.
UPDATE
이 tutorial의 도움으로나는 몇 가지 유용한 포인터를 발견했다. 그것에 따르면 각 하위 뷰에는 모든면을 고정하는 제약 조건이 있어야하며 자동 레이아웃이 셀 높이를 계산하는 데 도움이되는 위에서 아래로 오는 제약 조건이 있어야합니다. 내 원래 게시물에서 각 레이블 사이에 세로 간격이있어서 자동 레이아웃이 적절한 높이를 계산할 수없는 이유라고 생각합니다.
그래서 몇 가지 사항을 변경했습니다.
- 나는 레이블 사이의 수직 간격을 0으로 줄이고 상단 및 중간 레이블과 중간 및 하단 레이블 사이의 수직 공간 제약 조건을 설정했습니다.
- 맨 위 레이블에 선행, 맨 위, 후행 제약 조건을 추가했습니다.
- 중간 레이블 앞과 뒤.
- 아래쪽으로 이어지는 선행, 아래쪽 레이블.
이제 또 다른 이상한 부분이 있습니다. 처음 실행할 때 밑줄 자르기 문제가 여전히 있습니다. 나는 풍경에 장치를 회전하여 세로로 다시 켜면
그러나, 모든 모든 세포는 모두 라벨에 맞게 적절하게 조정됩니다!
아직도이 비록 처음에는 발생하지 않는 이유를 알아낼 수 없습니다. 업데이트 된 Xcode 프로젝트는 here입니다.
이 표는 너무 어려운 전에 라벨에 텍스트의 정확한 높이를 추정하기 위해 찾는 요청 보기가 나타나지만 모두 똑같이 잘하고 있습니다. 나는 당신이 viewDidAppear로 tableView.estimatedRowHeight = 100을 이동했다면 발견 한 문제를 해결했다. – sketchyTech
... 아니면 오히려 테이블이 예상되는 높이를 사용하여 첫 번째 로딩시 정확한 계산을하지 못하는 것으로 보인다. 탁자. 그러나 estimatedRowHeight가 설명한대로 이동하면 현재보고있는 문제가 해결됩니다. 모두 제거하면 rotate에서 다시 그리기 문제가 발생합니다. – sketchyTech
@GoodbyStackOverflow 제안대로했는데 문제가 있습니다. [이것이 실행될 때의 모습입니다] (http://i.imgur.com/1CNGVgR.png) 및 [아래로 스크롤 할 때] (http://i.imgur.com/lH7hasO.png).나는 두 번째 예제에도 똑같이 적용했으며 [결과] (http://i.imgur.com/AWg9Yib.png)입니다. 처음 3 개의 셀에서 잘 보이지만 마지막 셀에서 엉망이되었습니다. – Isuru