gpt4 book ai didi

ios - 没有固有内容大小的 UIViews 的拥抱/压缩?

转载 作者:可可西里 更新时间:2023-11-01 01:44:49 29 4
gpt4 key购买 nike

我在一次求职面试中被问到这个问题,我想知道他的意思。

拥抱和压缩属性对于任何具有固有内容大小的 View 的作用是显而易见的。

但是没有固有内容大小的 View 呢?他们在那里发挥作用吗?

最佳答案

有点奇怪的问题,没有一些额外的上下文。

不过,我想你可以讨论一些事情......

  1. 一些 View 在事后得到一个内在的内容大小。例如,UIImageView...没有图像,它就没有固有的内容大小。但是一旦设置了它的 .image 属性,它的固有内容大小就是图像的大小。因此,您可能希望根据发生的事情来设置优先级。

  2. 您可以给 UIView,例如“Placeholder”固有内容大小。更改拥抱/压缩优先级在设计时影响该 View 。

在这两种情况下,您都可以在 Storyboard/IB 设计期间“提前计划”您在运行时想要的内容。


编辑

这是一个(相当长的)例子:

这里我有一个 UIView(绿色),其中包含一个设置为 Fill/Fill/8UIStackView。堆栈 View 包含一个 UIImageView(Scale To Fill)和一个 UILabel。 ImageView 没有固有内容大小,而标签基于其内容的固有内容大小。

enter image description here

根据我设置的约束,堆栈 View 是 200 x 240 点。

在运行时,我要将图像设置为一只猫的 200 x 100 png:

enter image description here

我的目标是让 ImageView “适合图像”,让标签垂直扩展。

当我通过代码(在运行时)设置 .image 时, ImageView “获取”了一个固有的内容大小(在本例中为 200 x 100 ). ImageView 和标签都具有 Vertical Content Hugging: 251(默认值),结果如下:

enter image description here

但我希望图像保留其原始纵横比 2:1。首先想到的是将 ImageView 的内容模式更改为 Aspect Fit——但我得到了这个结果:

enter image description here

现在我的 ImageView 对图像进行“信箱化”,显示红色背景色。

因此,我更改了 ImageView 的 Vertical Content Hugging: 252(比标签的优先级更高)。输出:

enter image description here

现在我有了我想要的运行时输出,但在设计时(在 Storyboard/IB 中工作),什么都没有改变,可能真的不清楚会发生什么。

所以,我给 ImageView 一个 200 x 100Placeholder 内在内容大小,我看到了这个:

enter image description here

因为它是一个占位符,所以不会影响运行时输出(如果我将图像设置为 200 x 50 图像,它将是 200 x 50 在运行时),但它更好地反射(reflect)了我的预期。

当然,还有其他方法可以实现该目标,这可能不是理想的方法,但它(希望)给出了一种在元素上设置拥抱/压缩优先级的方法没有固有内容大小可能是有用的/需要的。

关于ios - 没有固有内容大小的 UIViews 的拥抱/压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595505/

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