如何处理有换行的字符串,算高度

当遇到含有换行的字符串时,简单的高度计算方法不再适用。本文介绍如何使用UITextView来解决这个问题,轻松计算带有换行的字符串所占据的控件高度。通过这种方法,可以避免在使用Lab显示复杂数据时的困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原来算高度直接使用

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

轻松解决,
但是碰到换行,就懵逼了吧!
若显示有换行的字符串,可以使用UITextView帮你轻松解决高度计算上代码

 UITextView *ysTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 10, 300, 10)];
    ysTextView.text = @"我原以为的以为,那些苍老的画面\r\n都终将会老去,走吧\r\n走吧\r\n我的血和汗\r\n<br />\r\n某天,我听你说着\r\n看遍千山万水\r\n开心的如此忘杯";
    // 可以将标签 ,进行转换
    NSString*ysStr =[ysTextView.text stringByReplacingOccurrencesOfString:@"<br />" withString:@"\r\n"];
    ysTextView.font = [UIFont systemFontOfSize:14];
    ysTextView.backgroundColor = [UIColor orangeColor];
    ysTextView.textContainerInset = UIEdgeInsetsZero;
    ysTextView.textContainer.lineFragmentPadding = 0;
    [self.view addSubview:ysTextView];
    CGFloat height=[(NSString *)ysTextView.text boundingRectWithSize:CGSizeMake(ysTextView.frame.size.width,CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:ysTextView.font} context:nil].size.height;
    CGRect textViewFrame = ysTextView.frame;
    textViewFrame.size.height = height;
    ysTextView.frame = textViewFrame;

简简单单算好控件的高度。用什么Lab 用Lab 显示种数据要头疼了!
效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值