我有自己的班级
TableViewCellRaing: UITableViewCell {
@IBOutlet weak var outletCellRating: RaingControl!
}
显然,评级控制的灵感来自于: https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson5.html
我已将其控制权置于“内容视图”
中然而,长标题涵盖了评级控制,这是不好的。
因此我试过了这个:
func tableView(tableView: UITableViewm cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//...
cell = tableView.dequeueReusableCellWithIdentifier("rating", forIndexPath: indexPath);
//...
cell!.textLabel!.lineBreakmode = NSLineBreakMode.ByWordWrapping;
cell!.textLabel!.numberOfLines = 0;
//...
}
这确实会使标题中断并跨越多行,但它们会破坏太晚(即它看起来像是没有看到/考虑包含评级控制的“内容视图”)
这是我的故事板的截图
我不确定从这里开始的最佳方式是什么 - 我想知道在创建我的自定义单元类时是否做错了什么?或者,如果我可以创建一个不同的方式来解决这个问题?
细胞高度也存在问题,但如果我首先解决自定义控制问题,我可以自己计算。
答案 0 :(得分:2)
为ratingControl提供高度,宽度,顶部和尾部约束。
您不能使用默认的textlabel,在ratingControl的左侧创建一个新标签。
给予容器边距的前导,顶部和底部(重要的是,不是超视图本身,而是视图边距,否则您可以使用动态高度单元格进行一些自动布局警告),尾随(到ratingControl,水平间距)和高度> = actualHeight与您的标签相对应。
然后将tableView estimatedRowHeight设置为原型单元格的平均高度(或者44.0是好的)和tableView.rowHeight = UITableViewAutomaticDimension。
cell!.textLabel!.numberOfLines = 0;是对的。
此时它应该有用......
答案 1 :(得分:0)
您的评分视图上方有3个标签,可能所有3个标签都必须为您提供问题。简单的方法是给出一个恒定的高度并转换大字符串,但你可能不需要它。因此,不要给标签赋予高度,而是正确地为您的标签和评级视图提供垂直约束。并使用
self.tableView.estimatedRowHeight = 50
self.tableView.rowHeight = UITableViewAutomaticDimension
和autolayout应该做的一切。