【问题标题】:Setting size for custom UI in ios在 ios 中设置自定义 UI 的大小
【发布时间】:2025-12-05 15:10:01
【问题描述】:

我正在构建一个名为 MyUIView 的自定义 IBDesignable UIView,它将从 .xib 文件中实例化。 MyUIView 旨在在我的应用程序中重复使用。

我面临的问题是,当我在情节提要的 UIViewController 中创建 MyUIView 视图时,自动布局要求我为视图的宽度和高度提供约束。 MyUIView 具有可变高度,我希望视图可以只包裹渲染的 MyUIView 的宽度和高度,而无需我在情节提要中指定视图的大小。

我如何做到这一点?

谢谢!

【问题讨论】:

    标签: ios swift uiview


    【解决方案1】:

    在您的视图类中覆盖 intrinsicContentSize。除非您使用显式约束另外指定,否则自动布局引擎会为您的视图使用此大小。

    请注意,每当视图的固有大小发生变化时,您都必须在视图上调用 invalidateIntrinsicContentSize()

    【讨论】:

    • 我已经做到了,但自动布局仍然需要我提供高度override func intrinsicContentSize() -> CGSize { return CGSize(width: UIScreen.mainScreen().bounds.size.width, height: 85) }
    • 顺便说一句,文档说“返回接收视图的自然大小,只考虑视图本身的属性”,所以我不确定使用屏幕宽度是有效。
    • 是的。对于这个特定的视图,它需要始终填充屏幕宽度
    最近更新 更多