【问题标题】:Auto-layout issue with stack view and label's font size堆栈视图和标签字体大小的自动布局问题
【发布时间】:2018-07-01 10:20:49
【问题描述】:

我真的很想自己解决这个问题,但是现在已经 3 个小时了,我认为这种问题不值得花一半的时间,所以我在这里寻求帮助。

这是auto-layout problem,所以我会尽力正确地说明它。

我有一个stack view,其中包含两个labels(故事板中的O_)。问题是我无法修复stack view 的大小以使label's font size auto-shrink 在较小的屏幕上同时正确显示在较大的屏幕上...

在 iPhone 5s 上效果最佳:

故事板 =

约束 =

模拟器 =

iPhone 8 结果 =

在 iPhone 8、8+ 和更大的屏幕上效果最佳:

故事板 =

约束 =

模拟器 =

iPhone 5s 和更小的屏幕结果 =

我想这是 StackView 让事情变得比他们应该的更难.. stack view 内的 labels 没有固定大小会很棒。我能做什么?

【问题讨论】:

  • 你的堆栈视图有什么限制?
  • 嗨,Linus,stack view 的约束显示在屏幕截图中。
  • 我正在专门寻找堆栈视图的尾随约束。我唯一能看到的是trailing = Stack View.trailing - 15。等式的左边部分应该是超级视图吗?
  • 确实如此。这是允许auto-shrink 工作的原因,但该约束也为stack view 内的labels 提供了一个固定大小,当没有足够的文本来填充所有空间时,这会使更大屏幕上的排列混乱。
  • 我应该放弃并在一个标签中打印所有内容吗?

标签: xcode autolayout storyboard uilabel uistackview


【解决方案1】:

如果你有一个嵌套的 stackViews(StackView inside StackView inside StackView 等),顶部 StackView 必须有顶部和底部约束,但底部必须是“大于”的类型(例如 ">= 1")。

如果没有这两个约束,高度通常会被错误计算,如果布局过程没有“喘息的空间”,也会发生同样的情况,因为约束被设置为严格。

【讨论】:

    【解决方案2】:

    您可以将尾随约束trailing = Stack View.trailing - 15 的关系从Equal 替换为Greater than or equal

    例如你需要:trailing >= Stack View.trailing + 15

    这样,堆栈视图的尾部将与父视图的尾部有 15 个点的距离,因此如果没有足够的空间,它将自动缩小。同时,如果空间很大,标签将不会展开,因为每个标签都会拥抱其内容。

    【讨论】:

      猜你喜欢
      • 2019-04-13
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多