tableView:heightForRowAtIndexPath:
方法中获取其框架高度返回。 - MischatableView:heightForRowAtIndexPath:
方法中返回它。唯一的区别是,我试图让 XIB 的 根视图 自适应大小,而另一篇帖子建议只让单元格的 contentView 自适应大小。我仍然相信这是一个有效的问题,是否也可以对除了 UITableViewCells 之外的视图进行自动布局,因为这将使自动布局变得更加容易。 - Mischa我曾经遇到过同样的问题。我有一个在xib中的视图,其中包含动态内容,并且需要适应其他父视图。以下是我如何实现的答案:
首先,您需要使用myViewFromXib.translatesAutoresizingMaskIntoConstraints = false
来防止将自动调整大小掩码转换为约束。然后添加子视图superViewForMyViewFromXib.addSubview(myViewFromXib)
。然后,只需将约束添加到父视图中,如下所示:
NSLayoutConstraint.activate([
(myViewFromXib.topAnchor.constraint(equalTo: superViewForMyViewFromXib.topAnchor, constant: 0))!,
(myViewFromXib.bottomAnchor.constraint(equalTo: superViewForMyViewFromXib.bottomAnchor, constant: 0))!,
(myViewFromXib.leadingAnchor.constraint(equalTo: superViewForMyViewFromXib.leadingAnchor, constant: 0))!,
(myViewFromXib.trailingAnchor.constraint(equalTo: superViewForMyViewFromXib.trailingAnchor, constant: 0))!
])
superViewForMyViewFromXib.setNeedsLayout()
你可以通过手动编辑xib来实现这一点,例如设置一个高度约束(在我的情况下是一个不等式来设置最小高度):
天啊,我简直不敢相信你会接受这是不可能的并改变你的方式,如果这是不可能的,那么Xib就毫无用处了。请不要向他人提供错误信息,你的问题很详细,但答案却非常糟糕:
答案非常简单:
subview.frame.size.height = rootView.frame.size.height
subview.frame.size.width = rootView.frame.size.width