iOS - 使 UIImageView 调整大小以适应 UILabel 和 AutoLayout

标签 ios objective-c uiimageview autolayout uilabel

我已经有一段时间遇到这个问题了,这让我发疯:我有一个 UILabel,其中的文本可以动态更改,我有一个 UIImageView 应该作为文本的背景。我希望 UIImageView 调整自身大小以始终适合 UILabel 的文本。

enter image description here

“付费”可以变成“免费”,或者法语中的“付费”,后面的框应该总是调整大小。

使用 Storyboard ,我尝试添加一个 UIImageView 并在其上添加 UILabel,并将 UILabel 的约束设置为 UIImageView,但这最终会将 UILabel 的大小调整为 UIImageView 的大小。我无法为 UIImageView 设置固定的宽度或高度,因为它应该适应。

我的第二次尝试是制作一个 UIView,将其重新分类为 UIIimageView,将 UILabel 添加为 subview ,使 UIView 调整大小以适应 UILabel 并以编程方式添加图像,但再次没有成功。

正确的做法是什么?

最佳答案

对于第一种方法,我假设您将标签和 ImageView 设置为具有相同的垂直和水平中心以及相同的高度和宽度。问题是布局引擎假设图像的固有尺寸比标签更重要。要更改它,您需要更改 View 的拥抱优先级和压缩阻力。 enter image description here转到标签(图片)的尺寸检查并将拥抱优先级增加到所需。这将使它的高度和宽度成为它的固有高度和宽度。您还可以降低 ImageView 的压缩阻力,因此更适合缩小尺寸。

标签的约束:enter image description here

您可以更改顶部并引导将其放置在 View 中的适当位置。

ImageView 的约束:enter image description here

关于iOS - 使 UIImageView 调整大小以适应 UILabel 和 AutoLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240575/

相关文章:

iphone - UIImageView 更改背景颜色和 setImage 在动画期间不起作用

ios - 串行队列(主线程除外)代码是否在主线程上执行?

ios - 来自 imagePicker 的图像不会显示在我的 imageView 中

ios - 在自动布局中自动更新框架

c# - 如何在 MVVMcross iOS 上使用反向可见性绑定(bind)?

ios - 无法使用 SwiftMailGun 从 UITextField 发送文本

objective-c - Truncate NSDate(清零时间)

iphone - '-respondsToSelector :' not found in protocol(s)

objective-c - 从 CGWindowListCopyWindowInfo 获取 NSWindow*

ios - UITableViewCell 在滚动时在某些单元格和不同的单元格中显示 UIImageView - 与 CoreData 和 NSFetchedResultsController 一起使用