在不自动调整大小的情况下确定 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 的大小以在关闭自动布局的情况下包装其内容
如何在不破坏图像纵横比的情况下调整 QImage 或 QML 图像的大小以适应父容器
如何在不指定估计行高的情况下使用 iOS 自动调整单元格大小?