This question already has answers here:
Vertically align text to top within a UILabel
(49个答案)
6年前关闭。
在iOS 5上。
我有一个UILabel元素,它最初放置在笔尖中。我希望x位置保持固定。我希望它采用1行或2行。如果多于两行,则应使用换行设置显示省略号。
我使用
如果将UILabel的
CGRect正是在这里为我提供了能够在事后计算事物的方法。因此,将
此属性控制为了使标签文本适合其边界矩形而使用的最大行数。此属性的默认值为1。要删除任何最大限制,并根据需要使用任意多的行,请将此属性的值设置为0。
看来我应该可以将此设置为两个,并且仍然可以使用。我希望
预计到达时间:将“自动调整大小”撑杆设置为上下,以将其固定为最小x,y。
感谢您的任何见解。
如您所见,我还希望标签的最小高度,因为
(49个答案)
6年前关闭。
在iOS 5上。
我有一个UILabel元素,它最初放置在笔尖中。我希望x位置保持固定。我希望它采用1行或2行。如果多于两行,则应使用换行设置显示省略号。
我使用
numberOfLines
属性和-sizeToFit
如果将UILabel的
numberOfLines
属性设置为0,它将正确看到某些文本没有足够的空间,并在调用-sizeToFit
之后将其包装到第二行,但在极少数情况下,该行足够长延伸到三行,我得到三行,这是我不想要的。如果将numberOfLines
属性设置为2,则实际上会将整个内容延伸到一行上,并将笔尖中的初始帧设置拉长到更宽。 CGRect titleFrame = [[self titleLabel] frame];
[[self titleLabel] setNumberOfLines:0];
[[self titleLabel] setText:newProductTitleText];
[[self titleLabel] sizeToFit];
CGRect newTitleFrame = [[self titleLabel] frame];
CGRect正是在这里为我提供了能够在事后计算事物的方法。因此,将
numberOfLines
设置为0是可行的,并且不会更改框架中的原始origin.x,并且会将长文本分成多行,但不会将其限制为2行。将numberOfLines
属性设置为2,当我阅读Apple文档时此属性控制为了使标签文本适合其边界矩形而使用的最大行数。此属性的默认值为1。要删除任何最大限制,并根据需要使用任意多的行,请将此属性的值设置为0。
看来我应该可以将此设置为两个,并且仍然可以使用。我希望
sizeToFit
在扩展以适合所有文本时会在X和Y方向上扩展,但是当numberOfLines
设置为非0时,它将在X方向上扩展。预计到达时间:将“自动调整大小”撑杆设置为上下,以将其固定为最小x,y。
感谢您的任何见解。
最佳答案
我遇到了类似的问题,其中-[UILabel sizeToFit]
不遵守将numberOfLines
设置为2时设置的最大宽度。这是我解决该问题的方法:
CGFloat titleMaxWidth = 200;
CGFloat titleMinHeight = 30;
CGFloat titleMaxHeight = 40;
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, titleMaxWidth, titleMaxHeight)]; // alternatively, you could do this in a nib
titleLabel.numberOfLines = 0;
titleLabel.text = @"The title label will be sized appropriately with this technique.";
titleLabel.font = [UIFont boldSystemFontOfSize:16];
[titleLabel sizeToFit];
titleLabel.numberOfLines = 2;
if (titleLabel.height > titleMaxHeight)
{
titleLabel.height = titleMaxHeight;
}
else if (titleLabel.height < titleMinHeight)
{
titleLabel.height = titleMinHeight;
}
如您所见,我还希望标签的最小高度,因为
-sizeToFit
通常会使标签很小,但是如果您不关心最小高度,则可以忽略该代码。 titleMaxHeight的“幻数”为40,来自实验,发现带有此字体的2行标签实际上只需要40px。在此代码中,-sizeToFit
主要用于将文本保持在宽度内,并确定当我们有一小段文本字符串时是否可以减小40的初始高度。08-05 23:45