计算文本高度的俩种方法

2017-12-03  本文已影响0人  牛程程

通过字符串计算和文本属性计算文本高度。
- (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary<NSAttributedStringKey, id> *)attributes;

可以放在工具类中,便于复用。

-(CGSize)configureTextSizeWithString:(NSString *)string WithFont:(NSFont *)font WithSize:(CGSize)maxSize
{
    if (string == nil)
    {
        NSLog(@"%s , 计算文本为空。",__func__);
        return CGSizeZero;
    }
    CGRect stringRect;
    stringRect = [string boundingRectWithSize:maxSize
                                      options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
                                   attributes:@{
                                                          NSFontAttributeName:font  //可以添加其它文本属性
                                                        }
                                      context:nil];
    return stringRect.size;
}

通过视图计算文本高度。
- (CGSize)sizeThatFits:(CGSize)size;

{
    if (view == nil)
    {
        NSLog(@"%s , 计算文本的视图为空。",__func__);
        return CGSizeZero;
    }
    CGSize fitSize ;
    fitSize = [view sizeThatFits:maxSize];//sizeThatFits 在maxSize的范围内,计算出最优的size,不会改变maxSize。
                                          //sizeToFit会计算出最优的size,而且会改变自己的size。
    
    return fitSize;
    
}
上一篇 下一篇

猜你喜欢

热点阅读