我可以让非居中的 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
垂直位置的纵横比约束。
我尝试将UILabel
和UIImageView
嵌入另一个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 指定一个约束以保持在 UISegmentedControl 的每个段下方居中?