调整自定义 Tableviewcell - NSLayoutConstraint 冲突。 UIView-Encapsulated-Layout-Height
Adjusting custom Tableviewcell - NSLayoutConstraint conflict. UIView-Encapsulated-Layout-Height
我在使用自动布局时遇到问题 Programmatically.I 正在调整带有自定义 UIView.The 的 tableviewCell uiView 中有一个没有图像的图像 issues.I 正在得到这个 error.What 是这里做错了吗?
(
"<NSLayoutConstraint:0x6000034e0e10 V:|-(1)-[XKCD_Comics.CardView:0x7f932b610f80] (active, names: '|':UITableViewCellContentView:0x7f932b6085c0 )>",
"<NSLayoutConstraint:0x6000034e1a90 XKCD_Comics.CardView:0x7f932b610f80.bottom == UITableViewCellContentView:0x7f932b6085c0.bottom - 1 (active)>",
"<NSLayoutConstraint:0x6000034e2120 XKCD_Comics.CardView:0x7f932b610f80.height == 310 (active)>",
"<NSLayoutConstraint:0x6000034e1590 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7f932b6085c0.height == 312.5 (active)>" )
Will attempt to recover by breaking constraint <NSLayoutConstraint:0x6000034e2120 XKCD_Comics.CardView:0x7f932b610f80.height == 310 (active)>
约束条件
func createViewHierarchy() {
//Initialize constaints Array
var constraints = [NSLayoutConstraint]()
//Setting up constraint for UIVIEW - ComicsView
constraints.append(comicsUIVIew.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 10))
constraints.append(comicsUIVIew.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 10))
constraints.append(comicsUIVIew.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor, constant: -10))
constraints.append(comicsUIVIew.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: -10))
constraints.append(comicsUIVIew.heightAnchor.constraint(equalToConstant: 310))
//activate NSLayoutconstaints
NSLayoutConstraint.activate(constraints)
}
Table 由于单元格分隔符的呈现方式,视图最终可能会出现非整数高度。
因此,在具有 @2x
屏幕比例的设备上,您的 comicsUIVIew
高度将最终为 310.5
...在 @3x
设备上,它将是310.333
如果可以接受,您可以通过更改高度限制的优先级来避免自动布局投诉:
//constraints.append(comicsUIVIew.heightAnchor.constraint(equalToConstant: 310))
let hc = comicsUIVIew.heightAnchor.constraint(equalToConstant: 310)
hc.priority = .defaultHigh
constraints.append(hc)
如果你需要comicsUIVIew
正好是310
点,可以加一个明确的“spacer " 视图(或 UILayoutGuide
)低于 comicsUIVIew
,给它一个 0.0 的高度约束和 .defaultHigh
的优先级。它最终会达到 0.5
或 0.333
点高。
或者...设置 tableView.separatorStyle = .none
,并根据需要将您的单元格设计为具有“底部边框线”以模拟分隔符。
我在使用自动布局时遇到问题 Programmatically.I 正在调整带有自定义 UIView.The 的 tableviewCell uiView 中有一个没有图像的图像 issues.I 正在得到这个 error.What 是这里做错了吗?
(
"<NSLayoutConstraint:0x6000034e0e10 V:|-(1)-[XKCD_Comics.CardView:0x7f932b610f80] (active, names: '|':UITableViewCellContentView:0x7f932b6085c0 )>",
"<NSLayoutConstraint:0x6000034e1a90 XKCD_Comics.CardView:0x7f932b610f80.bottom == UITableViewCellContentView:0x7f932b6085c0.bottom - 1 (active)>",
"<NSLayoutConstraint:0x6000034e2120 XKCD_Comics.CardView:0x7f932b610f80.height == 310 (active)>",
"<NSLayoutConstraint:0x6000034e1590 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7f932b6085c0.height == 312.5 (active)>" )
Will attempt to recover by breaking constraint <NSLayoutConstraint:0x6000034e2120 XKCD_Comics.CardView:0x7f932b610f80.height == 310 (active)>
约束条件
func createViewHierarchy() {
//Initialize constaints Array
var constraints = [NSLayoutConstraint]()
//Setting up constraint for UIVIEW - ComicsView
constraints.append(comicsUIVIew.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 10))
constraints.append(comicsUIVIew.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 10))
constraints.append(comicsUIVIew.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor, constant: -10))
constraints.append(comicsUIVIew.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: -10))
constraints.append(comicsUIVIew.heightAnchor.constraint(equalToConstant: 310))
//activate NSLayoutconstaints
NSLayoutConstraint.activate(constraints)
}
Table 由于单元格分隔符的呈现方式,视图最终可能会出现非整数高度。
因此,在具有 @2x
屏幕比例的设备上,您的 comicsUIVIew
高度将最终为 310.5
...在 @3x
设备上,它将是310.333
如果可以接受,您可以通过更改高度限制的优先级来避免自动布局投诉:
//constraints.append(comicsUIVIew.heightAnchor.constraint(equalToConstant: 310))
let hc = comicsUIVIew.heightAnchor.constraint(equalToConstant: 310)
hc.priority = .defaultHigh
constraints.append(hc)
如果你需要comicsUIVIew
正好是310
点,可以加一个明确的“spacer " 视图(或 UILayoutGuide
)低于 comicsUIVIew
,给它一个 0.0 的高度约束和 .defaultHigh
的优先级。它最终会达到 0.5
或 0.333
点高。
或者...设置 tableView.separatorStyle = .none
,并根据需要将您的单元格设计为具有“底部边框线”以模拟分隔符。