我知道这已经发布了,但我找到的解决方案
-(CGFloat)widthOfText{
CGRect idealFrame = [self.text boundingRectWithSize:self.frame.size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{ NSFontAttributeName:self.font }
context:nil];
return idealFrame.size.width;
}
自我是一个UILabel
没有工作。
我试图在字符串的末尾放置一个按钮,所以我需要字符串的宽度来计算按钮的绝对位置
任何人都可以解释为什么这不起作用或提出不同的方法吗?
答案 0 :(得分:3)
一个或多个输入不符合您的预期,NSLog()
self.text
,self.frame
,self.font
- 基本调试。
传递参数比使用ivars更好,这样可以更轻松地进行测试。它还消除了对类的依赖。
正常工作的示例:
NSString *text = @"1235";
CGSize frameSize = CGSizeMake(300, 50);
UIFont *font = [UIFont systemFontOfSize:12];
CGRect idealFrame = [text boundingRectWithSize:frameSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{ NSFontAttributeName:font }
context:nil];
NSLog(@"width: %0.1f", idealFrame.size.width);