【问题标题】:Is it necessary to use autolayout to use stackview是否需要使用自动布局才能使用stackview
【发布时间】:2018-08-23 19:05:50
【问题描述】:

是否有必要强制使用自动布局来只使用stackview 假设我在没有自动布局的情况下制作了整个项目, 现在对于特定屏幕,我必须使用 Stackview 来平均划分视图内的标签数量。 有什么解决办法吗..

问题

实际上,我必须自定义一个没有自动布局的旧项目,现在我只需要修改一个不需要任何约束的屏幕,只需修改 stackview,如 uitablecell,每个单元格中均分 8 个标签。

我知道我们可以通过计算帧运行时间来做到这一点,但是有没有 任何其他方式。

【问题讨论】:

  • 您使用过 Autoresize 吗?或以编程方式添加锚点?如果您使用 Autoresizing,您明确不需要 StackView 的 autoLayout,您能说出您面临的具体问题吗
  • 实际上我必须自定义一个没有自动布局的旧项目,现在我只需要修改一个不需要任何约束的屏幕,而只需修改一个像适用单元格一样的堆栈视图,每个单元格中有 8 个标签均分

标签: ios swift ios-autolayout autoresize stackview


【解决方案1】:

堆栈视图使用自动布局来定位和调整其排列视图的大小。 尽管堆栈视图允许您在不直接使用自动布局的情况下对其内容进行布局,但您仍然需要使用自动布局来定位堆栈视图本身。通常,这意味着固定堆栈视图的至少两个相邻边缘以定义其位置。在没有额外约束的情况下,系统会根据其内容计算堆栈视图的大小。

https://developer.apple.com/documentation/uikit/uistackview

【讨论】:

    【解决方案2】:

    是的,需要使用自动布局来定位堆栈视图本身

    来自Apple Documentation

    虽然堆栈视图允许您在不使用 直接Auto Layout,还是需要使用Auto Layout来定位 堆栈视图本身

    【讨论】:

    • 在没有自动布局的情况下有没有其他方法可以做到这一点
    • 不幸的是,一旦你在视图中使用了自动布局约束(堆栈视图会这样做,尽管它们会自动生成它们),你必须有自动布局约束来定位视图本身。约束求解器需要能够确定所有内容相对于视图控制器中最外层视图的最终位置。所以我不知道有什么方法可以在不使用自动布局的情况下使用堆栈视图
    【解决方案3】:

    如果您将堆栈视图的translatesAutoresizingMaskIntoConstraints 属性设置为true,那么您可以设置堆栈视图的frameautoresizingMask 来控制堆栈视图的大小和位置。自动布局会自动将您的设置变成约束。

    堆栈视图的排列子视图必须translatesAutoresizingMaskIntoConstraints 设置为true

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-26
      相关资源
      最近更新 更多