我以编程方式制作 tableView
tableView = UITableView.init(frame: CGRectZero, style: .Plain)
tableView.delegate = self
tableView.dataSource = self
self.view = tableView
然后我将 rowHeight 值设置为
tableView.estimatedRowHeight = 250
tableView.rowHeight = UITableViewAutomaticDimension
每个单元格在单独的 .swift 文件中描述,并且每个单元格都具有功能' construct()'它构建了自己的内容(标签,按钮等),这是他们的代码片段
let btnControl = UIButton()
btnControl.frame = CGRectMake(avatar.frame.origin.x, avatar.frame.origin.y + avatar.frame.size.height + 10, screenWidth - 20, 30)
self.addSubview(btnControl)
最后它看起来像
那么问题是什么?
答案 0 :(得分:0)
如果您需要以编程方式创建约束,您将在文档页面中看到所需的一切:https://developer.apple.com/library/ios/documentation/AppKit/Reference/NSLayoutConstraint_Class/index.html
我知道做你正在寻找的唯一另一种方法是在你的" tableView(_:heightForRowAtIndexPath:)"中获取每个单元格的大小。 UITableViewDelegate协议的实现。
答案 1 :(得分:0)
为了使UITableviewCell按照内容动态化,您必须使其内容视图的子视图动态化。在您的情况下,您必须使所有使用的UILabel动态。这是代码。
CGSize maximumLabelSize = CGSizeMake(your label width, FLT_MAX);
sizeWithFont:yourLabel.font constrainedToSize:maximumLabelSize
lineBreakMode:yourLabel.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;
现在依赖于一个UILable高度,您必须管理所有UILabel y和height如果您已经完成了单元格内容视图的最后一个子视图。计算最后一个子视图的高度+最后一个子视图的origin.y将是UITableview单元格的高度。
因此,请在heightForRowAtIndexPath委托方法中传递此高度。
(CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath;