UITableViewCell 的 nib 文件中的自动布局

Posted

技术标签:

【中文标题】UITableViewCell 的 nib 文件中的自动布局【英文标题】:AutoLayout in nib file for UITableViewCell 【发布时间】:2017-04-24 14:40:08 【问题描述】:

我正在尝试在 .xib 中重新创建我的 UITableViewCell,以便可以在多个视图中重复使用它。无论我做什么,在加载我的 .xib 时,我似乎都无法让 AutoLayout 完成它的工作。我尝试设置 translatesAutoresizingMaskIntoConstraints = false 当我对单元进行出队时。关于我可能做错的任何想法?

谢谢!

【问题讨论】:

你应该添加一些代码来展示你到目前为止所做的事情。 为什么需要 xib 才能重用单元格?只需创建一个自定义的UITableViewCell 子类,您就可以随心所欲地重复使用它。 @maddy - 我需要在多个视图中重用 UITableViewCell 布局。我不喜欢在代码中设置我的视图,而是使用设计器。我肯定有 UITableViewCell 的自定义子类,但我想将它与我在 .xib 文件中的布局配对 @James Scott 您是否以编程方式设置约束? 您是否在从 Nib 初始化后向视图添加约束?例如 myView = UNIIB(...) 然后在 myView 上使用自动布局,如果是这样,您确实需要在 myView 上的 awakeFromNib 中使用 translatesAutoresizingMaskIntoConstraints = false 【参考方案1】:

好的,我想我终于弄明白了。这与我在网上阅读的其他建议背道而驰,但这就是我所做的。我基本上有两个问题:

1) 我的垂直约束一直没有被完美地定义。就我而言,我有一个垂直堆栈视图,其中嵌入了其他堆栈视图,但我的主垂直堆栈视图没有底部约束。添加底部约束修复它。

2) 另外:在设置 translatesAutoresizingMaskIntoConstraints = false 使其正确自动布局之前,我遇到了 .xib(笔尖)的问题。在我的情况下,它调用这个是造成问题的。删除此设置并确保我的约束一直被定义似乎很有效。

【讨论】:

以上是关于UITableViewCell 的 nib 文件中的自动布局的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 的 nib 文件中的自动布局

为啥 nib 文件中的 UITableViewCell(加载并添加到堆栈)在 viewDidAppear 中为零,但在 viewDidLoad 中没问题?

UITableViewCell 继承

以编程方式创建 UITableViewCell 或从 nib 加载是不是更快?

当在 nib 中声明 UITableView 时,UITableViewCell nil IBOutlets [重复]

如何调整自定义 UITableViewCell nib 文件的大小以适合 tableView?