每当我重新加载tableView时,heightForRowAt
之后都会调用cellForRowAt
。它遵循的顺序是:
numberofsections -> numberOfRowsInSection -> cellForRowAt -> heightForRow
我已经覆盖了numberOfSections, numberOfRowsInSection, viewForHeaderInSection
个方法。这些会对调用heightForRow
和cellForRowAt
的顺序产生影响吗?
我正在使用在iOS 11上运行的Xcode 9.1,Swift 3。
答案 0 :(得分:0)
这里有两个选项:
手动计算尺寸。总结子视图之间的偏移量(高度)。这可能是计算label / textView大小的问题(保留帮助扩展以计算我使用的文本大小)。注意textView.contentInsets!你需要记住它才能获得正确的大小
extension String {
func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin,
attributes: [NSAttributedStringKey.font: font], context: nil)
return ceil(boundingBox.height)
}
func width(withConstraintedHeight height: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: .greatestFiniteMagnitude, height: height)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin,
attributes: [NSAttributedStringKey.font: font], context: nil)
return ceil(boundingBox.width)
}
}
希望它会对你有所帮助!