我有一个自定义UITableViewCell
,其中有两个UILabels
彼此相邻。我需要左侧的UILabel
随着文本的增长而增长,而右侧的UILabel
则会在此时发生向右移动。
我正在使用Autolayout并设置了约束。然而左边的UILabel永远不适合它的文本。我试过了sizeToFit
但是这样做了;做了什么。有人能告诉我哪里出错了吗?
我认为自动布局会根据内在的内容大小增加UILabels吗?
修改
这是我的细胞的样子:
所以左上角的标签有以下约束:
固定在左/上边缘。 宽度约束 水平间距标注到其右侧。
右边的标签也有类似的限制。
我需要UIImageView和灰色标签向右移动,因为最左边的标签会增长。
答案 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回答中找到。