uilabel sizetofit 不起作用
Posted
技术标签:
【中文标题】uilabel sizetofit 不起作用【英文标题】:uilabel sizetofit doesn't work uitableviewcell 【发布时间】:2014-05-28 11:45:21 【问题描述】:我有一个自定义的UITableViewCell
,它有两个相邻的UILabels
。我需要左边的UILabel
随着文本的增长而增长,而右边的UILabel
在发生这种情况时向右移动。
我正在使用自动布局并设置了约束。然而,左边的 UILabel 永远不适合它的文本。我已经尝试过sizeToFit
,但这确实;没有做任何事情。谁能告诉我哪里出错了?
我认为自动布局会根据 UILabel 的内在内容大小来增加它们?
编辑
这是我的单元格的样子:
所以左上角的标签有如下约束:
固定到左/上边缘。 宽度约束 在其右侧标注的水平间距。
右边的标签也有类似的限制。
随着最左侧标签的增长,我需要 UIImageView 和灰色标签向右移动。
【问题讨论】:
如果启用了自动布局,sizeToFit 将不起作用。你需要设置约束 我试过没有自动布局,但还是不行。我现在将上传一张关于自动布局约束的图片。 如果没有弄错sizeToFit
只会减少UILabel
的宽度。您必须定义大于文本长度的大小,或增加行数。设置文本并致电sizeToFit
。每次要更新文本时都应该这样做,因为 sizeToFit
永远不会扩展 UILabel's
宽度
我所需要的只是适合其包含的文本的标签。那没有发生。我假设一旦可行,其右侧的 UILabel 和 UIImageView 将随着约束的变化而移动。
【参考方案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 答案中找到。
【讨论】:
感谢您的回答。我会试试这个。以上是关于uilabel sizetofit 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell`sizeToFit`中的UILabel在AutoLayout的单元格内不起作用