gpt4 book ai didi

ios - 表格单元格未正确调整大小

转载 作者:搜寻专家 更新时间:2023-10-31 23:03:13 25 4
gpt4 key购买 nike

在开发我的第一个 iPhone 应用程序时,我在尝试使用“自动”调整表格单元格大小时遇到​​了问题。当我加载应用程序时,前几个单元格总是很大,大约是应有大小的 6 倍。然后,当我向下滚动并向上滚动时,它们将重置为应有的高度。 (看图举例,不好解释)

http://imgur.com/a/yzd6P (前 2 张图片)

到目前为止,我已经尝试了很多教程和 stackoverflow 的答案,但我无法在此处发布,因为我只能发布 2 个链接,其中大部分只涉及添加 UITableViewAutomaticDimension 属性。

我在 Storyboard中创建了单元格(包含 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!
}

Storyboard中的单元格设置是第 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.

如果需要更多信息,请告诉我。

最佳答案

  1. 尝试使用layoutIfNeeded立即更新约束。
  2. 对于修复警告,您应该将其中一个垂直约束优先级设置为 999。

如果将附件 View 设置为无,则一切正常

关于ios - 表格单元格未正确调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30842861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com