我将文本数据从xml加载到我今天的小部件标签,因此高度不能是静态的。由于字体大小是17px,我计算一行中最多有30个字符,并且我试图设置这样的高度
int number_of_characters = [self.string length];
[label sizeToFit];
self.preferredContentSize = CGSizeMake(self.view.frame.size.width, (number_of_characters/30)*22+40);
我将+40添加到高度,因为我在小部件顶部有静态文本,并且由于字体大小为17px,因此我认为在两行之间存在5px空格。
但是这不起作用,我无法解释原因:(。是否有其他方法可以使小部件高度动态化?
答案 0 :(得分:0)
试试这段代码: 你给他发了'字符串','宽度'和字体。
- (CGFloat)heightForValue:(NSString *)value andWidth:(CGFloat)width andFont:(UIFont *)font{
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
font, NSFontAttributeName,
nil];
CGRect frame = [value boundingRectWithSize:CGSizeMake(width, 999.0f)
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
attributes:attributesDictionary
context:nil];
// CGSize size = [value sizeWithFont:font constrainedToSize:CGSizeMake(width, 99999.0f) lineBreakMode:NSLineBreakByWordWrapping];
CGFloat result = frame.size.height;
return result;
}
示例:
CGFloat height = [self heightForValue:@"This is example code." andWidth:250];