如何找到与NSString对应的宽度

时间:2013-01-15 11:10:49

标签: iphone ios cocoa-touch nsstring uilabel

这个问题多次问过,但是我还没弄清楚,输错了。所以请任何人帮忙..

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所需的实际高度相对于我的标签宽度,我想要固定宽度,只需要改变高度所以我可以设置标签。但它总是给出比实际更低的高度..我在这里做错了什么..

感谢..

3 个答案:

答案 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;
}

将这两个用于身高或宽度