【问题标题】:Unable to fit a UILabel height to its text height无法将 UILabel 高度与其文本高度相匹配
【发布时间】:2016-07-16 18:12:55
【问题描述】:
我有一个自定义视图,其中放置了 UIImageView 和 UILabel。标签的文字可以是任意大小并且是动态设置的,所以我将标签的numOfLines设置为0。
另外,我正在使用Autolayout。图像视图是我放置在标签右侧的图标,我需要对齐图标和文本的顶部边缘(而不是标签的顶部)。我尝试了几种方法来消除标签与其文本之间的填充(sizeToFit,sizeThatFits)但没有成功,我需要标签的高度与文本的高度完全匹配才能将文本顶部与图标对齐...我怎样才能做到这一点?
【问题讨论】:
标签:
ios
text
alignment
uilabel
padding
【解决方案1】:
如果您想在这种情况下首先为标签设置动态高度,您需要在 storyboard/xib 中检查该标签的 prefferedmaxwidth 选项,然后设置 uilabel 约束。
为标签设置约束的顺序:-
1. 顶部
2.领先
3.尾随
如果您当前的标签高度与要求的不同,这将引发警告。
如果是这种情况,请为此标签选择“更新帧”选项。
现在设置底部约束。
无需调用 sizetofit 方法。自动布局将为您计算高度
【解决方案2】:
您可以通过使用以下代码更改标签的高度约束来更改标签的高度,
CGSize size = [@"your text" boundingRectWithSize:CGSizeMake(label.bounds.size.width, 10000) options:(NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName : @"FontName"} context:nil].size;
labelHeightConstraint = size.height;