Ios 仅当文本为文本时,才在UILabel中显示背景色

Ios 仅当文本为文本时,才在UILabel中显示背景色,ios,swift,uilabel,Ios,Swift,Uilabel,我已经通过脚本中视图控制器的属性选项卡设置了backgroundColor。但是我只想在填充到标签中的文本长度中显示背景色,而不是在整个可能的长度中 我无法附上任何图像,因此我希望: 尝试以下步骤: 在情节提要中选择ui标签 打开“尺寸检查器” 在“标签”部分,确保未选中“显式” 在“约束”列表中,确保没有约束为“宽度”特性提供值。此外,删除将UILabel的右边缘固定到UIImageView的任何约束,因为这将隐含地为自动布局提供固定的标签宽度 在UILabel和UIImageView之间添加

我已经通过脚本中视图控制器的属性选项卡设置了
backgroundColor
。但是我只想在填充到标签中的文本长度中显示背景色,而不是在整个可能的长度中

我无法附上任何图像,因此我希望:


尝试以下步骤:

  • 在情节提要中选择
    ui标签
  • 打开“尺寸检查器”
  • 在“标签”部分,确保未选中“显式”
  • 在“约束”列表中,确保没有约束为“宽度”特性提供值。此外,删除将
    UILabel
    的右边缘固定到
    UIImageView
    的任何约束,因为这将隐含地为自动布局提供固定的标签宽度
  • UILabel
    UIImageView
    之间添加“等宽”约束。这可以通过控制从标签拖动到情节提要中的图像视图,并从出现的菜单中选择“等宽度”来实现
  • 选择图像视图的标签。再次打开“尺寸检查器”,双击与刚创建的约束对应的框。在“关系”下拉菜单中,选择“小于或等于”

  • 这将导致
    UILabel
    根据其内部绘制的文本的宽度动态更改其宽度。当您设置
    backgroundColor
    属性时,它仍将填充标签,并且仅显示在文本后面。“等宽度”约束将确保标签的宽度不会超过图像视图的宽度。

    您的
    UILabel
    是否在情节提要中?还是通过编程方式添加?您的
    UILabel
    是否保留当前宽度,并仅剪辑显示背景色的位置?或者宽度可以改变而不破坏你的界面吗?正如你在所附的图片中看到的,我不想在右边的图片上加上文字。所以我必须对右边做一个约束,并用“Lines”0表示。因此,如果我有一个较长的文本,它将成为两行,而不是在图像右侧…正如我在上面的解决方案中尝试的那样,不。我有相同的“问题”,即整个标签是彩色的…好的,如果你移除你提到的约束会怎么样?看看当我移除正确的约束时会发生什么:纹理应该保持在图像的边界中。。。编辑:当绿色标签中的文本比图像短时,它是完美的。因此,背景仅与文本一样长