我一直试图解决这个问题差不多一天。因此,点应与其旁边的UILabel对齐。问题是,当填充正确的内容时,第二个标签有时会变成2行。点必须与UILabel 的第一行对齐,无论它有1行还是2行。
我在更新单元格时尝试在运行时调用sizeToFit()
。似乎没有效果。我读了Vertically align text to top within a UILabel帖子。
我模拟成功调用sizeToFit()
(编辑器 - >尺寸以适应内容),行的高度不会缩小。
每一行都包含UIView,在这个视图中有点和UILabel。点也是UIView。单行UILabel的行具有高度常数20.可能有2行UILabel的行设置为< = 26。
点必须与UILabel的第一行对齐,无论它有1行还是2行。这适用于较小的屏幕。
有人可以帮忙吗?
答案 0 :(得分:2)
<强> 1。 UIViewController层次结构
<强> 2。约束强>
View Main Content BG
lbl1
dot1
lbl2
lbl1
= 10,领先&amp; trailling = lbl1.leading&amp; lbl1.leading dot2
lbl3
lbl2
= 10,领先&amp; trailling = lbl2.leading&amp; lbl2.leading和bottom = 10 wrt superview dot1
别忘了保留每个标签的行数= 0。并绑定tableview委托&amp;数据源与VC。
第3。现在你的故事板设计看起来像这样
<强> 4。现在在VC中
虚拟阵列
var arrList : [[String : String]] = [["lbl1": "Do any additional setup after loading the view, typically from a nib.",
"lbl2": "Do any additional.",
"lbl3": "that can be recreated"],
["lbl1": "Do any additional .",
"lbl2": "Do any additional setup after loading the view, typically from a nib.",
"lbl3": "that can be recreated"],
["lbl1": "Do any additional . Do any additional setup after loading the view, typically from a nib.",
"lbl2": "Do any additional setup after loading the view, typically from a nib.",
"lbl3": "that can be recreated Do any additional setup after loading the view, typically from a nib. Do any additional setup after loading the view, typically from a nib."]]
TableView委托&amp;数据源
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 110
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return arrList.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "TblCell") as! TblCell
let dict = arrList[indexPath.row]
cell.lbl1.text = dict["lbl1"]
cell.lbl2.text = dict["lbl2"]
cell.lbl3.text = dict["lbl3"]
return cell
}
<强> 5。最终产出
修改
如果您使用respec标签设置常数= 5 wr的点的顶部,则输出低于。
答案 1 :(得分:0)
将第0行设置为UILable并删除其高度Constraint。所以它会相应地增加内容。
为UILable提供正确的前导,顶部,尾部,底部约束。将UITableViewRow height属性设置为UITableViewAutomaticDimesion tableview.rowHeight = UITableViewAutomaticDimesion tableView.estimatedRowHeight = 44
将常量宽度和高度约束设置为点视图,并将其前导约束设置为单元格视图,将水平间距设置为标签。并将其与UILabel的顶部对齐。
使用上述方法无需设置sizeToFit等属性。 它会解决你的问题。
当您将高度限制设置为UILable时,您遇到了问题。如果您从当前代码中删除它,它将解决您的问题。
答案 2 :(得分:0)