ios Autolayout - 在图像上对齐文本

Posted

技术标签:

【中文标题】ios Autolayout - 在图像上对齐文本【英文标题】:ios Autolayout - aligning text over image 【发布时间】:2014-07-07 17:55:40 【问题描述】:

我有一个由 UIImage 和 UITextLabel 组成的视图。标签漂浮在对话气泡内的图像上方。这两种资产都存在于一个设置为使用自动布局的 xib 文件中。 UIImage 被固定到容器视图的前缘、顶部、后缘和底部边缘。我尝试了很多事情,包括将 UILabel 固定在视图的左边缘和上边缘,并给它一个固定的宽度和高度。当整个 xib 被加载和缩放时,UILabel 不可避免地会失去对齐。应该如何使用自动布局设置这样的视图?在我的用例中,UILabel 正在动态更新,否则我只需将其渲染到图像中即可完成。

【问题讨论】:

【参考方案1】:

如果您希望文本始终在图像上方对齐,您可以尝试首先将图像添加到 .xib 文件并添加它的约束(最简单的左侧、顶部、右侧和底部到容器)。然后添加UILabel。从这里,单击标签,然后也选择图像(Shift + 单击)。转到编辑器 > 对齐并从此处选择选项...

Left/Right Edges 将对齐 UILabel 的左/右边缘以对齐 UIImage 的左/右边缘。顶部/底部边缘将对齐 UILabel 的顶部/底部边缘以对齐 UIImage 的顶部/底部边缘。等等……

但是,如果您先选择 UIImage,然后选择 UILabel,它会将 UIImage 与 UILabel 的边缘对齐。

编辑:

This post 帮助解释了一个可能的解决方案。

【讨论】:

恐怕这并不能真正解决我的问题。我试图将标签浮动到图像上方,但不对齐它的边缘,而是与图像的比例成比例地从它的边缘偏移,这样当我缩放整个视图时,标签和图像之间的方向保持不变. 哦,对不起,我误解了这个问题。所以你基本上是想找到图片本身的实际大小,而不是UIImageView,然后把UILabel放在合适的位置……这样对吗? 是的,我想是的。基本上我有一个带有语音气泡和一些动态文本的图像视图。我希望动态文本始终与对话气泡对齐,就好像它是图像的一部分一样。随着容器视图的缩放,我希望动态文本保持缩放并与气泡对齐。 啊...好吧,我不确定这是否可以仅通过自动布局来完成。不过我可能是错的。有一些方法可以计算 UIImageView 中实际图像的高度,然后可以相应地调整文本的大小,但我认为这是你试图通过使用自动布局来避免的。你可以看到this post,如果你想走那条路,它会讨论获取图像的实际大小。抱歉,我帮不上什么忙。 =( 那是我忽略的!在我的脑海中,我认为 UIImageView 是 UIImage 的代表,因为它们在我的 xib 文件中恰好大小相同。你是对的,我想与里面的 UIImage 对齐。愚蠢的错误。感谢您帮助我解决这个问题,即使没有简单的方法可以通过自动布局来完成这一点。

以上是关于ios Autolayout - 在图像上对齐文本的主要内容,如果未能解决你的问题,请参考以下文章

Autolayout :并排对齐两个按钮并在没有图像时移动到右侧

如何根据屏幕大小调整按钮的图像和文本大小(自动布局)

Sanity.io 便携式文本富文本编辑器中的文本/图像对齐

如何在背景图像上垂直对齐文本? [复制]

如何在移动屏幕上的文本顶部对齐右侧图像

图像视图autolayout从水平边缘固定到60pt,但自动刻度高度?