`
lanyut201568
  • 浏览: 752 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

iOS7中核算UILabel中字符串的高度

 
阅读更多

iOS7中核算UILabel中字符串的高度

iOS7中核算UILabel中字符串的高度

iOS7中出现了新的办法核算UILabel中依据给定的Font以及str核算UILabel的frameSize的办法.本人提供category如下:
UILabel+StringFrame.h
仿制代码
仿制代码
////  UILabel+StringFrame.h//  LabelHeight////  Copyright (c) 2014年 Y.X. All rights reserved.//#import @interface UILabel (StringFrame)- (CGSize)boundingRectWithSize:(CGSize)size;@end
仿制代码
仿制代码
UILabel+StringFrame.m
仿制代码
按 Ctrl+C 仿制代码
//
// UILabel+StringFrame.m
// LabelHeight
//
// Copyright (c) 2014年 Y.X. All rights reserved.
//
#import "UILabel+StringFrame.h"
@implementation UILabel (StringFrame)
- (CGSize)boundingRectWithSize:(CGSize)size
{
NSDictionary *attribute = @{NSFontAttributeName: self.font};

CGSize retSize = [self.text boundingRectWithSize:size
options:\
NSStringDrawingTruncatesLastVisibleLine |
NSStringDrawingUsesLineFragmentOrigin |
NSStringDrawingUsesFontLeading
attributes:attribute
context:nil].size;

return retSize;
}

@end
按 Ctrl+C 仿制代码
仿制代码
如今来测验代码:

效果图如下:

咱们来试验一下运用自定义字体测验一回:

显示成果:

无论自定义字体仍是体系字体都是能够完美运用的.

以下代码供你测验:
仿制代码
仿制代码
    // 字符串
    NSString *str = @"日落时分,沏上一杯山茶,听一曲意境空远的《禅》,心神随此天籁,沉溺于奥妙的幻景里。似乎我即是那络绎于葳蕤山林中的一只飞鸟,时而回旋扭转络绎,时而引吭高歌;似乎我即是那潺潺流泻于山涧的一汪清泉,涟漪轻盈,浩淼长流;似乎我即是那竦峙在天地间的一座山峦,傲岸挺拔,沉着连绵。我不相信佛,仅仅喜爱玄冥空灵的梵音经贝,与慈善漠然的佛境禅心,在清欢中,沉着幽静,安闲安定。一向神往走进青的山,碧的水,体悟山水的绚丽多姿,领会草木的兴衰荣枯,倾听黄天厚土之声,探寻世界天然的妙趣。走进了山水,也就走出了喧嚣,给身心以清凉,给精力以沉积,给魂灵以升华。";   
    // 初始化label
    UILabel *label = [UILabel new];
    label.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:label];   
    // label获取字符串
    label.text = str;   

    // label获取字体
    label.font = [UIFont fontWithName:nil size:18];   
    // 依据获取到的字符串以及字体核算label需求的size
    CGSize size = [label boundingRectWithSize:CGSizeMake(320, 0)];   
    // 设置无限换行
    label.numberOfLines = 0;   
    // 设置label的frame
    label.frame = CGRectMake(0.0f, 50.0f, size.width, size.height);
仿制代码
仿制代码


iOS6能够运用如下办法来获取字符串的size值
        size = [text sizeWithFont:font
                  constrainedToSize:size
                       lineBreakMode:NSLineBreakByCharWrapping];
但此办法已经在iOS7中被废弃了,留意.



//  获取字符串的巨细  ios7

- (CGSize)getStringRect:(NSString*)aString
{
    CGSize size;

    NSAttributedString* atrString = [[NSAttributedStringalloc] initWithString:aString];

    NSRange range = NSMakeRange(0, atrString.length);

    NSDictionary* dic = [atrString attributesAtIndex:0 effectiveRange:&range];

    size = [aString boundingRectWithSize:CGSizeMake(237, 200)  options:NSStringDrawingUsesLineFragmentOriginattributes:diccontext:nil].size;

    return  size;

}


//  获取字符串的巨细  ios6
- (CGSize)getStringRect_:(NSString*)aString
{
    CGSize size;

    UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13];
    size=[aString sizeWithFont:nameFont constrainedToSize:CGSizeMake(237, 200) lineBreakMode:NSLineBreakByCharWrapping];
    return  size;
}
引荐网站  http://www.keymob.com/


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics