我有一个自定义UITableViewCell,其中有两个彼此相邻的UILabels。我需要左侧的UILabel随着文本的增长而增长,而其右侧的UILabel在这种情况下向右移动。

我正在使用自动版式并设置了约束。但是,左侧的UILabel永远不适合其文本。我试过sizeToFit,但是什么也没做。有人可以告诉我我要去哪里了吗?

我认为自动布局会根据其内部内容大小来增加UILabel?

编辑

这是我的单元格的样子:



因此,左上方的标签具有以下约束:

固定到左/上边缘。
宽度限制
在其右侧标记的水平间距。

右边的标签也有类似的约束。

我需要UIImageView和灰色标签随着最左侧标签的增长而向右移动。

最佳答案

sizeToFit将仅在给定大小内进行调整。如果标签的大小为(100,30),并且文本大小为(30,30),则它将其大小更改为(30,30)。

现在,如果标签的大小为(30,30),而文本大小为(50,30),则它将坚持为其分配的大小。简而言之,它占用了文本大小和分配大小中的最小值。即MIN(actualSize, textSize)

为了获得所需的实际宽度,您应该使用(NSString UIKit Additions):

 - (CGRect)   boundingRectWithSize:(CGSize)size
                           options:(NSStringDrawingOptions)options
                        attributes:(NSDictionary *)attributes
                           context:(NSStringDrawingContext *)context;


很遗憾地说,但是每次将文本分配给标签时都需要执行此操作。

可以在this @Shan's SO答案中找到示例。

关于ios - uilabel sizetofit不起作用uitableviewcell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23910763/

10-16 07:51