我正在尝试使用多行标题和副标题构建UITableViewCell
。左侧还有一个UIButton
,仅显示在选定状态。
根据情况,单元格的高度应为:
约束是:
该应用针对iOS 8.0+,因此我们使用的是动态高度。来自TableViewController
:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 60
以下是我自定义单元格的setSelected
方法:
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
plusButton.hidden = !selected
let buttonAlpha: CGFloat = selected ? 1.0 : 0.0
plusButtonWidthConstraint.constant = selected ? 38.0 : 0.0
titleLeadingConstraint.constant = selected ? 8 : 0.0
if animated == true {
UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.layoutIfNeeded()
self.plusButton.alpha = buttonAlpha
}, completion: nil)
}
else {
self.layoutIfNeeded()
self.plusButton.alpha = buttonAlpha
}
}
问题:当标题和/或副标题足够长时(因此在选定模式下它们高于按钮) - 单元格高度不会拉伸到标签的最高位置(参见图3c) )。 如果我选择另一个单元格 - 第一个单元格重绘并且所有大小都正确 对我来说,重新计算标题和副标题的框架是在重新计算细胞界限后发生的。
次要问题: animated
参数始终为false(即使用户点击了单元格。但这对主要问题没有任何影响。