UITableViewCell自动高度基于UILabel文本的数量
我的故事板中有一个棘手的设置,我有一个UIViewController,它包含一个UITableViewController。 在UITableViewController中,我有几个原型单元,我已经链接到代码中的子类uitableviewcell对象。
使用约束和故事板我想根据UILabel最终的大小来改变原型单元格的高度,这取决于进入它的文本。
目前我有一个
UIViewController -- UITableViewController -- -- UITableViewCell ((melchat) prototype cell) -- -- -- ContentView -- -- -- -- UIView ((background) view with drop shadow card type effect) -- -- -- -- -- UIImageView (Avatar) -- -- -- -- -- IUlabel (dynamic (depending on code/input) multi line UILabel)
有些我希望UILabel调整UIView(背景)的大小然后反过来影响UITableViewCell的高度。
我正在使用XCode 8.2.1
我在故事板中采用了布局的屏幕截图并应用了约束。
更新
我已经更新了我的约束,几乎所有回到ContentView并将uilabel行计数更新为0,然后还实现了UITableViewAutomaticDimension代码,但它仍然无法正常工作。 请参阅下面的代码和屏幕截图。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewAutomaticDimension; }
再谈Dao的答案..
他是对的,你需要使用UITableViewAutomaticDimension
此外,您需要确保以一种方式设置约束,即单元格中的所有内容都被约束到单元格contentView。 所以你的标签可能需要诸如此类的限制
- 对ImageView的主要约束
- 对contentView的最高约束
- 对contentView的底部约束
- 跟踪contentView的约束
确保将UILabel设置为多行(或行= 0),它应该可以工作。
如果您正在使用heightForRowAt委托函数,请确保返回UITableViewAutomaticDimension
使用UITableViewAutomaticDimension
tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 300
步骤1:给予contentView内部的UIView以下约束。
- 对contentView的主要约束
- 对contentView的最高约束
- 对contentView的底部约束
- 跟踪contentView的约束
step2:给UIlabel提供以下约束
- 对UIImageView的主要约束
- 对UIView的最高约束
- 对UIView的底限制
- 跟踪UIView的约束
step3:然后选择IUlabel的Trailing约束并选择edit选项,然后选择constant并选择greaterThanEqual选项。
step4:设置label的numberofline = 0
步骤5:将此代码添加到viewDidLoad()
yourtableview.estimatedRowHeight = 80.0 yourtableview.rowHeight = UITableViewAutomaticDimension
填充UILabel并应用约束后,获取标签的高度并将其设置为UIView的高度。
之后调用-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
并传递UILabel / UIView的高度,以便它获得该行的实际高度
- 保存更新的Core Data实例
- 更改默认“未选择”UITabBarItem图像颜色
- KeychainItemWrapper在iOS 9上未加载OSStatus -34018(errSecMissingEntitlement)
- 我需要知道如何获得关于哪个播放器正在stream式传输的信息(player,spotify,napster …)
- 当应用程序在后台运行时显示UIAlert?
- iOS 11 UITableView删除行animation错误
- 自定义UITableViewCell和setSelected上的animation:animation:
- 使用iOS 11的大型标题时,调整条形按钮项的位置
- 为什么在dealloc方法中将scrollview的委托设置为零?