gpt4 book ai didi

ios - Interface Builder 运行时自动布局约束阻止 View 占用固有大小,我该如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:52 26 4
gpt4 key购买 nike

我有一个自定义的 UIView 子类,它有一个 intrinsicContentSize。 View 在 IB 中声明,有 3 个约束,center-x,height 和 bottom margin。当应用程序运行时,我希望 View 占用的宽度等于固有宽度。

但是,在调试时,Interface Builder 似乎添加了它自己的宽度运行时约束,覆盖了固有宽度。我该如何防止这种情况?

最佳答案

首先,通过不指定高度确保您正确实现了 intrinsicContentSize:

- (CGSize)intrinsicContentSize
{
return CGSizeMake(100.0f, UIViewNoIntrinsicMetric);
}

然后,如果 View 的唯一约束是 center-x、height 和 bottom-margin,IB 应该会在文档大纲的右上角提示一个带有红色小箭头的模糊布局( View 列表 Canvas 的左侧)。

ambiguous constraints indicator ambiguous constraints details

为了让 IB 高兴,并防止它在构建应用程序时添加缺少的约束,您必须告诉它 View 具有自定义的固有内容大小。为此,选择 View ,选择右侧的大小检查器面板,然后在最底部将内部大小从“默认(系统定义)”更改为“占位符”。

然后您必须指示与从 intrinsicContentSize 返回的大小相同的大小:

placeholder intrinsic size

这告诉 IB 将在运行时定义固有内容大小,并且在设计时它应该使用这些值。

请注意,如果您在方法实现中指定了 UIViewNoIntrinsicMetric,则应在 IB 中选中“None”。此外,您在此处键入的值在运行时没有影响。这只是 IB 在设计时的一个指标。

关于ios - Interface Builder 运行时自动布局约束阻止 View 占用固有大小,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25998584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com