uitableviewcell 动态标签宽度与 VFL

uitableviewcell dynamic label width with VFL

我需要在 table 视图单元格中放置标签和图像,使图像紧挨着标签放置,但在单元格可见范围内。即,它们应该如下所示,

  1. 当文本较小或在一行内时,图像可以紧挨着标签。例如-
Smaller text (image)
  1. 当文本超出一行时,图像可能位于单元格的边缘,因为标签长度已经延长到该长度。例如-
Multiline text multi-line text multi-line
text multi-line text multi-line text multi  (image) 
multi-line text multi-line text

我正在尝试使用 VFL 实现此目的,而没有故事板或笔尖。

我尝试了什么:

1. "H:|-[label]-[image(==20)]-|"  , "V:|-[label]-|"

这使得图像始终附加到边缘,因此情况 1 失败,需要图像靠近标签。例如-

案例 1:

Smaller text                                (image)    (not ok)

案例 2:

Multiline text multi-line text multi-line
text multi-line text multi-line text multi  (image)    (ok)
multi-line text multi-line text
2. "H:|-[label]-[image(==20)]" , "V:|-[label]-|"

这使得图像靠近文本,因此对于情况 1 是可以的,而对于情况 2 则失败,因为情况 2 没有将文本换成多行,并且文本超出了单元格宽度。例如-

案例 1:

Smaller text (image)             (ok)

案例 2:

Multiline text multi-line text multi-line text multi...    
(not ok - text not wrapped to multiple lines, remaining text and image hidden) 

如何解决这个问题?为某些约束设置优先级会有帮助吗?

我对 VFL 没有太多经验,但是,我知道 Autolayout 所以我可以给你解决方法的想法

我看到了你的两次尝试

1. "H:|-[label]-[image(==20)]-|"  , "V:|-[label]-|"
2. "H:|-[label]-[image(==20)]" , "V:|-[label]-|"

在第一次尝试中,您在尾部固定了图像

第二次尝试时,您已修复带有标签

的图像

联合解决方案是什么?

Your clear requirement says that you need your image attached with label trailing also take care about tailing to superview

这个问题的明确解决方案是

你必须给你的 imageView 尾随可能是此代码 [image(==20)]-| 应该更改为 大于或等于 与 [=35= 的关系]0 常量

它会告诉自动布局引擎与 superview 的尾部保持最小 0 距离

抱歉,我没有太多 VFL 经验,所以无法给您确切的代码

希望对您有所帮助