iOS UILabel 单词自动换行

废话不多说,上图上代码,举例说明!

// 显示文案
NSString *content = @"非常优秀,性格随和开朗大方,待人友好,为人诚实谦虚,beautiful,工作勤奋,认真负责,能吃苦耐劳,尽职尽责,有耐心";
// 计算文案高度  
CGRect rect = [content boundingRectWithSize:CGSizeMake(SCREEN_WIDTH-40, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil];
CGFloat height = rect.size.height;
// 创建UILabel    
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 17, SCREEN_WIDTH-40, height)];
titleLabel.text = content;
titleLabel.font = [UIFont systemFontOfSize:14];
titleLabel.numberOfLines = 0;
titleLabel.backgroundColor = [UIColor redColor];
[view addSubview:titleLabel];

运行情况视图如下:

字符默认自动换行,不明白“虚,”为什么换行了。

可能有时候不想要字符自动换行的,那需要设置lineBreakMode

typedef NS_ENUM(NSInteger, NSLineBreakMode) {
    NSLineBreakByWordWrapping = 0,         // Wrap at word boundaries, default
    NSLineBreakByCharWrapping,        // Wrap at character boundaries
    NSLineBreakByClipping,        // Simply clip
    NSLineBreakByTruncatingHead,    // Truncate at head of line: "...wxyz"
    NSLineBreakByTruncatingTail,    // Truncate at tail of line: "abcd..."
    NSLineBreakByTruncatingMiddle    // Truncate middle of line:  "ab...yz"
} API_AVAILABLE(macos(10.0), ios(6.0), watchos(2.0), tvos(9.0));
titleLabel.lineBreakMode = NSLineBreakByCharWrapping;

设置lineBreakMode,以字符为单位,进行换行

此时UILabel所计算的高度,还是按默认的所计算的, 于是计算高度也需要进行设置lineBreakMode

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineBreakMode:NSLineBreakByCharWrapping];

CGRect rect = [content boundingRectWithSize:CGSizeMake(SCREEN_WIDTH-40, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSParagraphStyleAttributeName:style} context:nil];
CGFloat height = rect.size.height;

perfect

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值