在不自动调整大小的情况下确定 UIView 容器大小

Posted

技术标签:

【中文标题】在不自动调整大小的情况下确定 UIView 容器大小【英文标题】:Determine UIView container size without autoresizing 【发布时间】:2014-05-27 11:55:08 【问题描述】:

我在 ios 7 中以编程方式使用自动布局。我有一个动态视图组件,它充当多个子视图的容器。不知道容器应该容纳多少子视图,只知道该视图的宽度将与其子视图相等,高度是动态的,具体取决于将有多少子视图。

= ContainerView 的边界

 =======
 = SV1 =
 = SV2 =
 = SVn =
 = ... =
 =======

由于我以编程方式执行所有自动布局,我需要一种方法来告诉容器视图它应该是 CGSize x 大。如何使用自动布局而不自动调整大小来做到这一点?

【问题讨论】:

你不能设置一个约束让你的视图的宽度等于容器视图的宽度吗? 这可能非常适合宽度。我已经编辑了我的原始问题以澄清我的问题。 是否有理由不将高度限制设置为子视图的总高度? 【参考方案1】:

只要您的所有子视图在-intrinsicContentSize 中指定有效的垂直尺寸(例如,Apple 的控件默认执行此操作),您就可以让它工作。然后,将子视图的顶部和底部固定在一起, SV1 的顶部到容器的顶部,SVn 的底部到容器的底部。那么容器将永远是它所包含的视图的高度。

【讨论】:

【参考方案2】:

毕竟,我将 NSLayoutConstraint 的 -constraintWithItem:... 中的乘数设置为我在视图中预期的项目数。我必须设置一些其他约束,但至少它像我想象的那样工作。我仍然希望为我的问题提供一个不太容易编写代码的解决方案(类似于仅设置 autoresizingmask,单线)。

【讨论】:

以上是关于在不自动调整大小的情况下确定 UIView 容器大小的主要内容,如果未能解决你的问题,请参考以下文章

在不调整大小或重绘的情况下扩展 UIView

调整 UIView 的大小以在关闭自动布局的情况下包装其内容

如何在不破坏图像纵横比的情况下调整 QImage 或 QML 图像的大小以适应父容器

如何在不指定估计行高的情况下使用 iOS 自动调整单元格大小?

具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?

使用固定大小的子视图和自动布局调整 UIView 的大小不起作用