我的快速项目中有这张表
tableView = UITableView()
tableView.dataSource = self
tableView.delegate = self
let tableViewHeight = postTexts.count*200
tableView.estimatedRowHeight = 55
tableView.rowHeight = UITableViewAutomaticDimension
tableView.allowsSelection = false;
tableView.reloadData()
tableView.layoutIfNeeded()
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat{
return 55
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let ProfilePicture = UIImageView()
ProfilePicture.image = #imageLiteral(resourceName: "cole")
let username = UILabel()
username.text = posters[indexPath.row]
username.numberOfLines = 0
let postText = UITextView()
postText.text = postTexts[indexPath.row]
postText.isScrollEnabled = false
postText.isUserInteractionEnabled = false
let border = UIView()
border.backgroundColor = UIColor(r: 17, g: 221, b: 219)
cell.addSubview(ProfilePicture)
cell.addSubview(username)
cell.addSubview(postText)
cell.addSubview(border)
ProfilePicture.anchor(cell.topAnchor, left:cell.leftAnchor, bottom: nil, right: nil, topConstant: 15, leftConstant: 14, bottomConstant: 0, rightConstant: 0, widthConstant: 50,heightConstant:50)
username.anchor(cell.topAnchor, left:ProfilePicture.rightAnchor, bottom: postText.topAnchor, right: cell.rightAnchor, topConstant: 20, leftConstant: 13, bottomConstant: 0, rightConstant: 15, widthConstant: 0)
postText.anchor(username.bottomAnchor, left:ProfilePicture.rightAnchor, bottom:nil, right: cell.rightAnchor, topConstant: 0, leftConstant: 15, bottomConstant: 0, rightConstant: 15, widthConstant: 0)
border.anchor(postText.bottomAnchor, left:cell.leftAnchor, bottom: cell.bottomAnchor, right: cell.rightAnchor, topConstant: 20, leftConstant: 0, bottomConstant: 20, rightConstant: 0, widthConstant: 0,heightConstant:1)
cell.layoutIfNeeded()
cell.sizeToFit()
return cell
}
如你所见,即使有4个细胞,他也只显示2个细胞,我怎样才能改变它的行为以显示所有细胞? 这是我的表约束
tableView.anchor(PostsDiv.bottomAnchor, left:view.leftAnchor, bottom: nil, right: view.rightAnchor, topConstant: 40, leftConstant: 15, bottomConstant: 0, rightConstant: 15, widthConstant: 0,heightConstant:tableView.contentSize.height+tableView.contentInset.bottom+tableView.contentInset.top)
答案 0 :(得分:0)
旧帖子中的问题仍然存在。您的单元格无法正常工作,因为您需要单元格中的自动高度,但您在tableView和单元格上设置了错误的约束。这是你问题的第三个转发,但这是你和安德里亚和我的回答:
答案 1 :(得分:0)
我使用界面构建器创建了几乎相同的UI。
https://github.com/Hapeki/Example4
我建议你在编程之前看一下这个以及AutoLayout如何工作。用户界面基于https://stackoverflow.com/a/42971009/6414904
的解释演示视频:
细胞自动调整大小,由大型lorem ipsum文本看到。如果你想让整个屏幕滚动,你应该考虑为你的tableView创建一个headerView,但这不属于这个问题的范围。在您的代码中,您可以根据单元格的数量设置tableView高度* height:let tableViewHeight = postTexts.count*200
,这是错误的工作方式,它会在问题发生后引发问题。我强烈建议使用界面构建器(故事板)或者如果你想要一些" hybrid"方法你可以去xibs / nibs,在那里你可以创建包含outlet的View类,并在其中做一些程序化的东西。