【问题标题】:Horizontally Center UILabel + UIImageView inside UIView with Autolayout使用自动布局在 UIView 内水平居中 UILabel + UIImageView
【发布时间】:2015-12-28 18:36:45
【问题描述】:

第一个问题:

我有UIView,其中包含UILabel(动态文本)+UIImage。我希望它们位于UIView 的中心。就像这些图片:

here 的答案已经过时了,现在我们有了堆栈视图,也许它可以让任务更轻松。

第二个问题:

我有三个彼此相邻的 UIView,每个都有 UIImageView + UILabel,它们应该在它们的容器中居中(问题 1)。在屏幕宽度较小的 iPhone 4s 中,文本会破坏布局,如下图所示:

我使用 Xcode 7.0 |目标iOS8及以上|斯威夫特 2

【问题讨论】:

  • 你能显示你设置的约束吗?
  • 将标签和图像视图固定到容器的两侧。对顶部和底部使用零针,对图像和标签之间的间隙使用任何你喜欢的东西。对于边约束,使用 >= 而不是 =,因此布局可以适合较大的项目。标签和 imageView 在容器中水平(但不是垂直)居中,然后在主视图中水平和垂直居中容器。只要您在图像视图中设置了默认图像,这至少应该在没有冲突或错误的情况下进行布局 - 您可能需要调整优先级以获得您想要的内容
  • 您还需要在标签上设置 maxPreferredWidth。或者使用宽度约束
  • @iOSGeek 好运了吗?
  • @AdeelMiraj 即使有赏金也没有答案

标签: ios autolayout interface-builder swift2 ios9


【解决方案1】:

这实际上很容易在纯 Autolayout/IB 中完成,无需代码。它最终看起来像这样:

这是带有视图的情节提要文件,因此您可以轻松查看约束。它使用相同的子视图包装器技术,但根据需要使标签收缩/切断的技巧是在包装器视图的两侧添加 >= 0 约束,防止其扩展超出父视图的边界,其中turn 可以防止标签增长。

https://www.dropbox.com/s/ml67zdjwugf8jco/SO_Solution-20151013.storyboard?dl=0

【讨论】:

  • 我跟着你的故事板,它工作,他在这里的技巧是将前导和尾随空格设置为 >= 和
  • 你需要付出一些东西!什么会变小?如果您对缩小文本大小感到满意,则可以启用该选项。另一种选择是让所有图像缩小一点。
  • 也许文本大小应该变小以适合我可以通过代码完成的大小,但使用 IB 可能吗?
  • 是的,选择 UILabel,你会在属性检查器的右侧看到 Autoshink over 的选项。
【解决方案2】:

清理包含并重新添加。我在 Xcode 7.0 中遇到了这个问题,但它显然在 Xcode 7.0.1 中已修复。

【讨论】:

    【解决方案3】:
    1. 使用 Button(而不是使用 ImageView 和 Label)并设置适当的图像和标题。
    2. 设置图片和标题插图
    3. 添加到视图并将超级视图约束的前导空间和底部空间分配给第一个按钮
    4. 将超级视图约束的尾随空间和底部空间分配给第三个按钮
    5. 将左侧水平空间(使用第一个按钮)和右侧水平空间(使用第三个按钮)分配给第二个按钮。
    6. 为所有三个按钮添加相等的宽度和固定的高度约束。

    另外,您可以添加宽度约束并使其具有动态宽度。

    排序中,可以用按钮完成。

    【讨论】:

    猜你喜欢
    • 2014-03-08
    • 2016-10-15
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多