tldr:如果您的自定义UITableViewCell子类有一个@property IBOutlet UIImageView*被调用imageView的名称,请将您的名称更改为其他名称(例如customImageView),它将正常工作。阅读其余答案以了解原因
我看到没有人回答这个问题,我浪费了整整一周的时间试图找到解决方案,所以这就是发生在我身上的事情,以及如何防止它发生在你身上(从而解决你的问题)。
我创建了一个CustomTableViewCellwhich extends UITableViewCell。
我添加@property (weak, nonatomic) IBOutlet UIImageView *imageView;到我的自定义单元格中。到目前为止一切似乎都很好,对吧?
除非它不是。
UITableViewCell已经有imageView房产了。iOS 7 首先使用您的属性,但是当重用 Cell 时,会使用UITableViewCell的imageView,因此会忽略您的所有约束或先前定义的固定大小。
iOS 8 总是使用来自UITableViewCell. 所以问题在那里更明显。以前的 iOS 版本也有不同程度的这个问题,通常会出现非常相似的症状。
解决方案?自己处理属性(添加用于布局视图的代码)或使用不同的名称UITableViewCell.imageView创建自己的属性,您可以使用它在 Storyboard 或 xib 上添加约束(如果您使用自动布局)。