首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITableViewAutomaticDimension破坏约束?

UITableViewAutomaticDimension破坏约束?
EN

Stack Overflow用户
提问于 2014-11-29 16:34:23
回答 3查看 2.6K关注 0票数 5

我正在尝试使用UITableViewAutomaticDimension,但在不引起NSLayoutAutomaticSizeConstraint...问题的情况下,要使单元格完全宽度和正确的高度是有困难的。如果关闭单元格上的自动大小约束,则它不是完全宽度。

我有两个按钮,具有对内容视图的水平和垂直约束。它们之间有一个垂直间距约束,每个按钮都有一个高度约束。

如果我关闭AutoResizingMask,我会得到一个不完全宽度的单元格.如果我保持它,我得到布局约束违反,但事情呈现正确。

我怎么才能得到我想要的行为?

代码语言:javascript
复制
translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7f856b169650 V:[UIButton:0x7f856b16a510'+(null)'(50)]>",
    "<NSLayoutConstraint:0x7f856b173dd0 UIButton:0x7f856b16a510'+(null)'.top == UITableViewCellContentView:0x7f856b16bfa0.topMargin>",
    "<NSLayoutConstraint:0x7f856b173e70 UITableViewCellContentView:0x7f856b16bfa0.bottomMargin == UITextField:0x7f856b16c4f0.bottom>",
    "<NSLayoutConstraint:0x7f856b174520 V:[UIButton:0x7f856b16a510'+(null)']-(8)-[UITextField:0x7f856b16c4f0]>",
    "<NSLayoutConstraint:0x7f856b182a10 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f856b16bfa0(66)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f856b169650 V:[UIButton:0x7f856b16a510'+(null)'(50)]>

实际上看起来宽度是由

代码语言:javascript
复制
- (CGSize)intrinsicContentSize {
    return CGSizeMake(320, 66);
}

如果不设置内部内容大小,则不会得到任何宽度或高度。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-05 15:57:47

编辑:这绝对是两个高度限制。尝试删除一个,或降低优先级。

票数 2
EN

Stack Overflow用户

发布于 2014-11-30 01:09:00

AutoresizingMask on =允许此视图的父级设置适当的掩码。

AutoresizingMask off =不允许此视图的父级设置适当的掩码。我想自己做。

如果在IB中创建视图,默认情况下将其autoresizingMasks设置为“否”。

如果在代码中创建视图,则默认情况下将其autoresizingMasks设置为Yes。

当关闭AutoresizingMask时,会得到一个不完全宽度的单元格(或任何行为更改),这意味着单元格或表的父单元格(在视图层次结构中)很可能正在接管并设置约束(这不是您想要的)。

现在,我认为您要获得这个不完全宽度的单元格的原因是,当您在视图元素之间拖动以设置约束,而不是将约束绑定到顶部、底部等时,IB中有一个恼人的默认设置。

因此,您需要从“文档大纲”中选择约束:

,然后逐个选择绑定到边框的约束:

,并确保不选中“相对于空白”。

如果您在IB的右下角使用摘要约束选项卡(从左开始第二个),您可以在创建约束时取消选择“约束到边距”:

票数 1
EN

Stack Overflow用户

发布于 2016-04-24 00:56:42

我也有类似的问题:

代码语言:javascript
复制
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

它向我抛出了一个“无法满足约束”的日志,但是没有任何约束误导,所以我添加了estimatedHeightForRowAtIndexPath:

代码语言:javascript
复制
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

然后就修好了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27204451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档