uilabel sizetofit不起作用uitableviewcell

时间:2014-05-28 11:45:21

标签: ios objective-c uitableview

我有一个自定义UITableViewCell,其中有两个UILabels彼此相邻。我需要左侧的UILabel随着文本的增长而增长,而右侧的UILabel则会在此时发生向右移动。

我正在使用Autolayout并设置了约束。然而左边的UILabel永远不适合它的文本。我试过了sizeToFit但是这样做了;做了什么。有人能告诉我哪里出错了吗?

我认为自动布局会根据内在的内容大小增加UILabels吗?

修改

这是我的细胞的样子:

enter image description here

所以左上角的标签有以下约束:

固定在左/上边缘。 宽度约束 水平间距标注到其右侧。

右边的标签也有类似的限制。

我需要UIImageView和灰色标签向右移动,因为最左边的标签会增长。

1 个答案:

答案 0 :(得分:1)

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回答中找到。