Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建灵活的UILabel_Ios_Xcode_Uilabel - Fatal编程技术网

Ios 创建灵活的UILabel

Ios 创建灵活的UILabel,ios,xcode,uilabel,Ios,Xcode,Uilabel,我有一个带有一些文本数据的应用程序 从TableView用户选择一个单元格,然后查看UIViewController和相关文本数据。但是信息文本可以是从1行到N行。如何创建这样的UILabel,它将根据文本的大小改变大小?您可以设置标签的numberOfLines属性来指定它可以换行的行数。如果将其设置为零,则可以换行到任意数量的行。您可以在nib中设置此属性 但是,还需要将其框架设置为足够大,以显示所有线。最简单的方法是在设置文本后向其发送sizeToFit消息。它将保持其宽度(我认为),但将

我有一个带有一些文本数据的应用程序


从TableView用户选择一个单元格,然后查看UIViewController和相关文本数据。但是信息文本可以是从1行到N行。如何创建这样的UILabel,它将根据文本的大小改变大小?

您可以设置标签的
numberOfLines
属性来指定它可以换行的行数。如果将其设置为零,则可以换行到任意数量的行。您可以在nib中设置此属性

但是,还需要将其框架设置为足够大,以显示所有线。最简单的方法是在设置文本后向其发送
sizeToFit
消息。它将保持其宽度(我认为),但将其高度更改为足以显示包装后的所有线条


如果您可能有太多的文本,以致无法显示在屏幕上(或无法显示在标签可用的空间中),则应使用
UITextView
UITextView
允许自动滚动。

另一种解决方案是在代码内部使用sizeWithFont方法进行滚动。 您可以在此处找到更多信息:


如果高度不同,您可以使用标准标签宽度和9999高度设置最大标签大小,然后使用NSString UIKit Additions中标签的字体检查文本的建议大小,您可以找到以下方法:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
- (float)optimalHeight
{
    return [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(self.frame.size.width, UINTMAX_MAX) lineBreakMode:self.lineBreakMode].height;
}
使用此选项,您可以定义标签的最佳高度或宽度。例如,要获得UILabel的最佳高度,可以使用以下方法在UILabel上创建类别:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
- (float)optimalHeight
{
    return [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(self.frame.size.width, UINTMAX_MAX) lineBreakMode:self.lineBreakMode].height;
}

之后,您可以简单地更改UILabel的框架。不要忘记将标签的行号设置为0。

我可以为该标签设置固定宽度吗?然后测量高度?检查