Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Objective c 根据NSString大小设置UILabel长度(以像素为单位):目标C_Objective C_Ipad_Nsstring_Uilabel - Fatal编程技术网

Objective c 根据NSString大小设置UILabel长度(以像素为单位):目标C

Objective c 根据NSString大小设置UILabel长度(以像素为单位):目标C,objective-c,ipad,nsstring,uilabel,Objective C,Ipad,Nsstring,Uilabel,在我的iPad应用程序中,我显示了滚动UILabel,其中的文本将从web服务中获取,并且同样的文本大小需要设置为动态。我的问题是,我必须根据从web服务获取的文本的长度设置UILabel的宽度 或是可能但徒劳的解决方案 假设存储从服务器获取的字符串的NSString包含300个字符,则使用以下代码显示2270作为宽度 CGFloat width = [ScrollingLabel.text sizeWithFont:ScrollingLabel.font].width; Scrolling

在我的iPad应用程序中,我显示了滚动
UILabel
,其中的文本将从web服务中获取,并且同样的文本大小需要设置为动态。我的问题是,我必须根据从web服务获取的文本的长度设置
UILabel
的宽度

或是可能但徒劳的解决方案

假设存储从服务器获取的字符串的
NSString
包含300个字符,则使用以下代码显示2270作为宽度

CGFloat width =  [ScrollingLabel.text sizeWithFont:ScrollingLabel.font].width;

ScrollingLabel.frame = CGRectMake(1024,720,width,45);

但是,我也没有在应用程序中获得一半的字符串。

实际上,实现这一点的最佳方法是编写UILabel类别并添加方法:

- (CGFloat)expectedWidth
{
    CGSize size = [self.text sizeWithFont:self.font
                        constrainedToSize:CGSizeMake(FLT_MAX,self.bounds.size.height)
                            lineBreakMode:self.lineBreakMode];

     return size.width;
}

我可以通过将代码生成的宽度乘以2来解决问题:

CGFloat width =  [ScrollingLabel.text sizeWithFont:ScrollingLabel.font].width;

ScrollingLabel.frame = CGRectMake(1024,720,width,45);

您的代码在这里运行良好。是否可以在其他位置调整标签的大小,例如使用自动调整大小的遮罩?