내 셀 레이아웃의 낮은 품질의 모형에 맞게 정적 테이블 뷰 셀 높이를 성장 이 셀은 두 가지 뷰입니다. 하단보기에는 고정 높이가 40입니다. 상단보기에는 상단 여백에 정렬하고 하단보기에 수직으로 정렬하는 레이아웃 제약 조건이 있습니다. 평면도 내부 자동으로 라벨 내용 높이 여기
는 라벨 (청색) 및 버튼 (황색)라벨은 또한 볼의 상단에 정렬하고 뷰의 바닥으로 정렬하는 제약을 갖고있다. 그 레이아웃과 제약의 배경은 예를 들어 셀의 높이를 100으로 늘리면 아래쪽 뷰의 높이가 40이고 위쪽 뷰와 레이블의 높이가 60 높이로 확장됩니다.
내 레이블 줄 바꿈 단어 줄 바꿈 및 줄 수를 0으로 설정했습니다. 이제 원하는 것은 자동으로 셀의 크기를 조정하여 둘 이상의 줄이있을 때 레이블의 전체 내용이 표시되도록하는 것입니다. 내가 정확히 그것을 어떻게 할 수 있니?
나는 노력이 작동하지 않습니다
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 80.0;
. 셀 높이는 항상 UILabel
의 줄 간격과는 별개로 80 개입니다.
는 또한 시도 :
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension;
}
내 첫 번째 방법은 같은 결과로.
이override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let heightLabel = self.heightForView(text: self.lblTitle.text!, font: UIFont(name: "Helvetica Neue", size: 18)!, width: self.lblTime.width);
let heightView = (heightLabel + (80.0/2));
print("title label height \(heightLabel)");
print("title view height \(heightView)");
if (heightView > 80.0) {
return heightView;
}
return 80.0;
}
func heightForView(text: String, font: UIFont, width: CGFloat) -> CGFloat {
let label: UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude));
label.numberOfLines = 0;
label.lineBreakMode = .byWordWrapping;
label.font = font;
label.text = text;
label.sizeToFit();
return label.frame.height;
}
출력 :
title label height 42.5
title view height 82.5
하지만이 또한 다른 라인 때문에 작동하지 않습니다가 표시되지 않는 첫 번째 단지 내가 노력
더 복잡한 방법은 다음이었다 라벨의 라인.
어떻게하면됩니까?
편집은 내가 라벨의 폭을 알고있을 때 작동합니다 레이블 높이를 계산과 접근 방법을 생각한다. 그러나 나는 그것을 어떻게 알아야합니까?
'self.tableView.estimatedRowHeight = 80.0; '대신'estimatedRowHeight'을 120.0;으로 설정하십시오. 'estimatedRowHeight'은 80을 설정하면 tableView 행이 80을 넘지 못하도록합니다. 80보다 더 많이 확장해야하는 경우 120으로 설정해야합니다. 자세한 내용은 https://developer.apple.com/ reference/uikit/utableview/1614925-estimatedrowheight – Rugmangathan
그리고 120보다 커야한다면? 높이는 동적으로 모든 높이가 될 수 있습니다 (레이블의 선의 양에 따라 다름). – Mulgard
방금 높이를 줬습니다. 당신은 당신이 보여주는 메시지에 따라 최대 값을 설정해야합니다. – Rugmangathan