这个问题多次问过,但是我还没弄清楚,输错了。所以请任何人帮忙..
CGSize maximumSize = CGSizeMake(208, 21);
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [my_string sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.my_label.lineBreakMode];
my_label.numberOfLines = 0;
my_label.frame.size = myStringSize;
我有一个大小的标签(208,21),我使用下面的代码来获取NSString所需的实际高度相对于我的标签宽度,我想要固定宽度,只需要改变高度所以我可以设置标签。但它总是给出比实际更低的高度..我在这里做错了什么..
感谢..
答案 0 :(得分:2)
在您的示例中,使用最大尺寸(非常)高而不是限制高度:
CGSize maximumSize = CGSizeMake(208, CGFLOAT_MAX);
这样,总会有足够的高度扩展到,同时将宽度限制为您实际想要的宽度。
答案 1 :(得分:0)
试试这个:
-(CGSize) calculateWidthOfString:(NSString*)textString withFont:(UIFont*)font
{
CGSize maximumSize = CGSizeMake(9999, 22);
CGSize size = [textString sizeWithFont:font
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
使用stringObject和Font Name,Size
调用此函数它返回具有恒定高度“22”的字符串的宽度,根据需要更改此值。
希望这会对你有所帮助。
答案 2 :(得分:0)
+ (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString
{
CGSize maximumSize = CGSizeMake(width, 9999);
CGSize size = [textString sizeWithFont:[UIFont fontWithName:@"Helvetica" size:24]
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
+ (CGSize) calculateLabelWidthOfString:(NSString*)textString withFont:(UIFont*)font
{
CGSize maximumSize = CGSizeMake(9999, 22);
CGSize size = [textString sizeWithFont:font
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
将这两个用于身高或宽度