iOS技术积累

不管生活有多不容易,都要守住自己的那一份优雅。

UISatckView Autolayout

  1. 您负责定义堆栈视图的位置和(可选)大小。然后,堆栈视图管理其内容的布局和大小。

一些特殊的要注意的

  1. 如果堆栈视图的 isLayoutMarginsRelativeArrangement 属性设置为 true ,则堆栈视图的适配大小会增加以包含边距空间。
  2. 基线对齐仅适用于高度与其内在内容大小的高度相匹配的视图。如果视图被拉伸或压缩,基线会出现在错误的位置。
  3. 从 arrangedSubviews 数组中删除视图不会将其作为子视图删除。堆栈视图不再管理视图的大小和位置,但视图仍然是视图层次结构的一部分,并且如果可见则在屏幕上呈现。
  • 常见的布局方式
  1. 只固定位置,stackView的增长 自由控制

  2. 固定布局轴的大小,和位置,。比较适合在内部调整内容大小和填充内部空间,当内容不足于填充整个StackView时,优先拉伸 content-hugging(内容优先级)优先级的视图
    比如横屏布局一个 stackview 位置固定了 长度固定了,里面放了一个label和 textfield 那么一般会拉伸UITextFiled的区域 供填充剩余的部分

  3. 固定垂直布局轴的大小和位置,可以让stackview的布局轴的大小自由变换

  4. 全部定义位置和大小
    然而,使用这种方法获得所需的布局需要几个额外的步骤。

  5. 默认情况下,堆栈视图垂直拉伸标签而不是图像视图。要调整图像视图的大小,请将其 content-hugging 降低到标签的 content-hugging级以下。

  6. 要在调整大小时保持图像视图的纵横比,请将其模式设置为Aspect Fit. 。在imageview 和 Stackview 之间添加等宽约束有助于确保图像大小能够填充可用空间。

  • 当StackView的尺寸和内部容器不匹配时
  1. 当stackview大 内容小时
    它会根据视图的拥抱优先级content-hugging小的来拉伸视图

  2. 当StackView小,内容大时
    ,它会根据视图的压缩阻力(compression resistance)优先级小的缩小视图。

  3. 如果存在任何歧义(比如全部相等),堆栈视图会根据 arrangedSubviews 数组中的索引调整排列视图的大小。

评论卡