根据像素中的NSString大小设置UILabel长度:Objective C

时间:2012-05-18 09:12:40

标签: objective-c ipad nsstring uilabel

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

I have tried allmost the解决方案可能但是徒劳无功。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

我可以通过将宽度乘以代码产生的2来得到问题的解决方案:

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

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

答案 1 :(得分:1)

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

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

     return size.width;
}