在我的第一个iPhone应用程序上工作时,我在尝试使用“自动”表格单元格大小调整时遇到了问题。当我加载应用程序时,前几个单元格总是很大,大约应该是它的6倍。然后,当我向下滚动并向后滚动时,它们将重置为它们应该的高度。 (例如,见图片,很难解释)
http://imgur.com/a/yzd6P(前2张图片)
到目前为止,我已经尝试了一些我无法在此发布的教程和stackoverflow答案,因为我只能发布2个链接,其中大多数只涉及添加UITableViewAutomaticDimension属性。
我在故事板中制作了单元格(包含4个标签,所有#行设置为0和3个图像(参见第三张图片))并给它一个标识符,然后为它创建一个自定义类来更改标签'文本。
像这样调整单元格大小:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 104
使用以下行似乎解决了大多数设备上的问题,但它仍然存在于iPhone 6 plus(第四张图片)上:
tableView.reloadSections(NSIndexSet(indexesInRange: NSMakeRange(0, self.tableView.numberOfSections())), withRowAnimation: UITableViewRowAnimation.Fade)
绘制单元格:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:TableCell? = tableView.dequeueReusableCellWithIdentifier("tableCell") as? TableCell
if cell == nil {
cell = TableCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "tableCell")
}
cell?.lblObituaryName.text = obituaryArray[indexPath.row].name
cell?.lblObituaryBirth.text = obituaryArray[indexPath.row].dateOfBirth
cell?.lblObituaryDeath.text = obituaryArray[indexPath.row].dateOfDeath
cell?.lblObituaryPlace.text = obituaryArray[indexPath.row].city
cell?.setNeedsUpdateConstraints()
cell?.updateConstraintsIfNeeded()
return cell!
}
故事板中的单元格设置是第5张和最后一张图像。
细胞限制:
Table cell is 104.0 high
Main title label:
Trailing space to: Superview = 0
Leading space to: Superview = 0
Top space to: Superview = 0
Bottom space to: Label1 = 6
Bottom space to: Label1Image = 1
Label 1:
Trailing space to: Superview = 0
Leading space to: Label1Image = 5
Bottom space to: Label2 = 6
Top space to: Main Label = 6
Label 1 Image:
Leading space to: Superview = 0
Width = 25
Height = 25
Trailing space to: Label1 = 5
Bottom space to: Label2Image = -3
Top space to: Main Label = 1
Label 2:
Trailing space to: Superview = 0
Leading space to: Label2Image = 5
Bottom space to: Label3 = 6
Top space to: Label2 = 6
Label 2 Image:
Leading space to: Superview = 0
Width = 25
Height = 25
Trailing space to: Label2 = 5
Bottom space to: Label3Image = -3
Top space to: Label1Image = -3
Label 3:
Trailing space to: Superview = 0
Bottom space to: Superview = -1
Leading space to: Label3Image = 5
Top space to: Label2 = 6
Label 3 Image:
Leading space to: Superview = 0
Width = 25
Height = 25
Trailing space to: Label3 = 5
Top space to: Label2Image = -3
通过将约束优先级更改为999来修正以下错误。但仍在寻找上述问题的答案。
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7a0affb0 UILabel:0x7a079ea0'Mw. J.H. Zwierenga'.top == UITableViewCellContentView:0x7a074170.topMargin>",
"<NSLayoutConstraint:0x7a0b00a0 V:[UILabel:0x7a079ea0'Mw. J.H. Zwierenga']-(6)-[UILabel:0x7a0394f0'21 May 2015']>",
"<NSLayoutConstraint:0x7a0b0190 V:[UILabel:0x7a0394f0'21 May 2015']-(6)-[UILabel:0x7a0a1f20'1 December 1935']>",
"<NSLayoutConstraint:0x7a0b0280 UITableViewCellContentView:0x7a074170.bottomMargin == UILabel:0x7a094e10'Oudeschild'.bottom - 1>",
"<NSLayoutConstraint:0x7a0b02b0 V:[UILabel:0x7a0a1f20'1 December 1935']-(6)-[UILabel:0x7a094e10'Oudeschild']>",
"<NSLayoutConstraint:0x7a0b2fe0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7a074170(0)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7a0b02b0 V:[UILabel:0x7a0a1f20'1 December 1935']-(6)-[UILabel:0x7a094e10'Oudeschild']>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
如果需要更多信息,请与我们联系。
答案 0 :(得分:1)
如果将附件视图设置为无
,则一切正常答案 1 :(得分:0)
试试这个
OUTPUT