开始从 Spring 结构过渡到自动布局,并对“固有尺寸”设置有一些疑问。
如果将某个 View 的“本征大小”设置为“占位符”并放置一些宽度和高度值,则该 View 将不会缩放,并且将保持固定大小。但是,如果我们将“本征大小”设置为“默认(系统定义)”,则系统将在运行时根据需要决定并缩放 View 。
但是,我们可以使用Ctrl + Drag来显式设置 View 的宽度和高度系统约束。在这种情况下,将存在系统的宽度和高度限制以及const占位符值。我正在查看现有代码,并试图了解它是否是一个错误,是否应该删除多余的系统宽度和高度约束,或者存在其他一些隐藏的逻辑。但是,Xcode在运行时不会在控制台中显示任何警告等信息。这是演示项目的打印屏幕:
最佳答案
将固有大小设置为“占位符”时,您告诉Xcode布局系统, View 的大小将取决于其内容(例如标签可能取决于其文本内容)。系统仅知道并维护其自身具有固有大小的 View 类型。如果您希望对自己的 View 有类似的体验,请考虑将其视为具有固有大小的 View 。然后,您设置约束,就好像该 View 根据其内容而增长或缩小一样。最后,您实现intrinsicContentSize
方法来计算并返回正确的内容大小。如果内容更改并且应该执行新的计算,则可以在 View 上调用invalidateIntrinsicContentSize
。根据您设置约束的方式, View 将增大和/或缩小,或者 View 将是静态的(例如您可以在标签上设置宽度和高度约束,并且它保持静态)。
关于ios - 内在大小与系统宽度/高度约束的区别是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19677142/