我可以让非居中的 UILabel 保持其相对于正在缩放的​​ UIImageView 的位置吗?

Posted

技术标签:

【中文标题】我可以让非居中的 UILabel 保持其相对于正在缩放的​​ UIImageView 的位置吗?【英文标题】:Can I make a non-centered UILabel maintain its position relative to a UIImageView that is being scaled? 【发布时间】:2015-09-14 23:18:03 【问题描述】:

我一直在通过教程、*** 浏览和实验的组合来学习 AutoLayout 的变幻莫测。我在这项工作中的主要目标是了解如何在 Interface Builder 中使用 AutoLayout 和最少(最好是no)代码来定义尽可能多的 UI。

我现在想要实现的是弄清楚如何让UILabel(或任何UIView 子类,真的)保持其相对于UIImageView 的位置。这是目前如何在 IB 中设置的图片,因此代表了我的意图:Storyboard

我知道如何在UIImageView 上设置约束,以便根据设备大小调整大小。但我似乎无法弄清楚如何指定约束来告诉 IB 我希望UILabel 的垂直位置也以相同的方式缩放。感觉就像我本质上是在寻找对 UILabel's 垂直位置的纵横比约束。

我尝试将UILabelUIImageView 嵌入另一个UIView 并在那里设置一些约束。主要感兴趣的是:

    UILabel Align center X: Superview
    UILabel Top Space to: Superview Equals: 25 (as computed by IB)

不同设备尺寸的结果是: 4 inch iPhone 5.5 inch iPhone iPad

如您所见,这不是预期的结果!我能做些什么?非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

不确定是否可以设置比例间距约束。但是,在我的脑海中,您可能可以添加一个具有约束的透明视图:

top aligned to imageView's top
left aligned to imageView's left 
right aligned to imageView's right
bottom aligned to label's top
height proportionally equals to imageView's height

【讨论】:

这很好用。我的直觉告诉我,最后一个约束中的乘数应该设置为(label.top - imageView.top) / imageView.height。 iPhone 型号的固定字体大小意味着从 4 英寸 iPhone 到 5.5 英寸 iPhone 的文本(根本)不能很好地缩放,但这是一个需要解决的单独问题。

以上是关于我可以让非居中的 UILabel 保持其相对于正在缩放的​​ UIImageView 的位置吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局保持 UILabel 居中

在跨表行中添加图像以相对于其他非跨行行保持居中

可以将 SVG 剪辑路径相对于其容器居中吗?

如何为 UILabel 指定一个约束以保持在 UISegmentedControl 的每个段下方居中?

使用 NSLayoutConstraints 在 UITextView 中将 UILabel 居中

将某些 div 元素居中,同时将另一个元素保持在底部