Ios 手动实例化UITableViewCell时,它不会按预期显示
我已经使用xib创建了一个自定义的Ios 手动实例化UITableViewCell时,它不会按预期显示,ios,uitableview,autolayout,Ios,Uitableview,Autolayout,我已经使用xib创建了一个自定义的UITableViewCell 自定义单元格很简单,由固定在UITableViewCell的“内容视图”的4个边缘上的UILabel组成 我想实例化此单元格并将其添加为UIStackView的子视图。我使用以下代码来实例化单元格 让nib=UINib(nibName:“CustomTableViewCell”,bundle:nil) 让cell=nib.instantiate(withOwner:nil,options:nil)!CustomTableViewC
UITableViewCell
自定义单元格很简单,由固定在UITableViewCell
的“内容视图”的4个边缘上的UILabel
组成
我想实例化此单元格并将其添加为UIStackView
的子视图。我使用以下代码来实例化单元格
让nib=UINib(nibName:“CustomTableViewCell”,bundle:nil)
让cell=nib.instantiate(withOwner:nil,options:nil)!CustomTableViewCell
stackView.addArrangedSubview(单元格)
当应用程序运行时,我观察到单元格的大小与预期不符。高度小于预期值,且标签未显示
使用Xcode中的“Debug View Hierarchy”,我发现单元格的内容视图中添加了一些约束,这导致了这个问题。
UIView封装布局-*
约束似乎是问题的根源。有人能指出如何解决这个问题吗
注意-如果在
UITableView
中使用自定义的UITableView单元格
,则它会按预期显示。只有当手动实例化UITableViewCell
时,才会观察到该问题。我认为表视图单元格不是设计为以这种方式工作的。不过,使用它的内容视图,您可能会有一些运气。因此,将cell.contentView
插入堆栈视图而不是单元格。请注意,这可能会产生其他问题,因为单元格现在没有被其superview保留,因此您需要将其添加到某个数组中以保留所有功能。此外,如果所有操作都失败,我建议您在XIB中创建一个包含所有设计和功能的@IBIdesignable
视图。然后,对于堆栈视图,只需直接使用视图。对于单元格,您可以在故事板或另一个XIB中添加与子视图相同的视图。正如@MaticOblak所指出的,添加单元格的contentView
。不支持更改UITableViewCell的contentView的translatesAutoresizingMaskIntoConstraints属性的警告[LayoutConstraints],这将导致未定义的行为,因为此属性由所属UITableViewCell管理。
显示在日志中。这一点在本问题中也已指出-