编码自动布局对UITableView无法正常工作

时间:2015-08-18 11:38:09

标签: ios swift uitableview autolayout

我正在使用UITableView处理供稿页面,我正在尝试为单元格设置动态高度(根据内容进行调整。)

我为单元格创建了一个自定义类,这里是代码:

class cellTableViewCell: UITableViewCell, UINavigationControllerDelegate {



//OUTLETS
@IBOutlet weak var usernameLbl: UILabel!
@IBOutlet var profileImg: UIImageView!



override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code



    usernameLbl.text = "Username"
    usernameLbl.textColor = UIColor.grayColor()

    profileImg.layer.cornerRadius = profileImg.frame.size.width/2
    profileImg.layer.masksToBounds = true


    profileImg.addConstraint(NSLayoutConstraint(item: profileImg, attribute: NSLayoutAttribute.Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1.0, constant: 100.0))

    contentView.addSubview(profileImg)

    contentView.addConstraint(NSLayoutConstraint(item: profileImg, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: contentView, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 100.0))




}

然后,在控制表视图的View Controller的ViewDidLoad()方法中,我添加了以下内容:

self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 160.0

然而,细胞根本不适应,因为高度仍然小于内容。

2 个答案:

答案 0 :(得分:0)

我认为你的Constraint是完全正确的,但问题是你无法为每个单元构建一个具有不同高度的动态TableViewCells的UITableView。我自己尝试过,但在动态UITableViewCell中,tableView(tableView.rowHeight)的属性为rowHeight。因此,此rowHeight将覆盖由约束条件定义的单元格的每个不同高度。

答案 1 :(得分:0)

我找到了问题的答案:

你可以像这样使用UITableViewDelegate的'heightForRowAtIndexPath'函数:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return CGFloat(100)
}