Objective c 根据NSString大小设置UILabel长度(以像素为单位):目标C
在我的iPad应用程序中,我显示了滚动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
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);
您的代码在这里运行良好。是否可以在其他位置调整标签的大小,例如使用自动调整大小的遮罩?