• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSMutableParagraphStyle 在表格单元格中为 uilabel(对齐异常)自动高度

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:34:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

tableview 重新加载后崩溃

这个问题只发生在 iOS6 上,iOS7 没问题。

异常说明:

NSTextAlignmentJustified 和 NSTextAlignmentNatural 在绘制 NSString 时是无效的对齐值
(空值)
(
0 核心基金会 0x00aa702e 异常预处理 + 206
1 libobjc.A.dylib 0x03152e7e objc_exception_throw + 44
2 CoreFoundation 0x00aa6deb +[NSException raise:format:] + 139
3 UIKit 0x022ea8ec -[NSString(UIStringDrawing) _drawInRect:withFont:lineBreakMode:alignment:lineSpacing:includeEmoji:truncationRect:] + 88
4 UIKit 0x022ea88f -[NSString(UIStringDrawing) drawInRect:withFont:lineBreakMode:alignment:lineSpacing:includeEmoji:] + 99
5 UIKit 0x022ea827 -[NSString(UIStringDrawing) drawInRect:withFont:lineBreakMode:alignment:lineSpacing:] + 91
6 UIKit 0x0241ce73 -[UILabel _legacy_drawTextInRect:baselineCalculationOnly:] + 3433
7 UIKit 0x0241cf76 -[UILabel _drawTextInRect:baselineCalculationOnly:] + 160
8 UIKit 0x0241bcd9 -[UILabel drawTextInRect:] + 548
9 UIKit 0x0241e098 -[UILabel drawRect:] + 98
10 UIKit 0x0230fe6e -[UIView(CALayerDelegate) drawLayer:inContext:] + 504
11 QuartzCore 0x0340ba3f -[CALayer drawInContext:] + 128
12 QuartzCore 0x0340b96b _ZL16backing_callbackP9CGContextPv + 96
13 QuartzCore 0x0331d723 CABackingStoreUpdate_ + 2703
14 QuartzCore 0x0340b83c _ZN2CA5Layer8display_Ev + 1406
15 QuartzCore 0x0340b9ba -[CALayer _display] + 33
16 QuartzCore 0x0340b2b6 _ZN2CA5Layer7displayEv + 152
17 QuartzCore 0x0340b994 -[CALayer 显示] + 33
18 QuartzCore 0x034000e2 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 328
19 QuartzCore 0x0340015c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 38
20 QuartzCore 0x0337e0bc _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 324
21 QuartzCore 0x0337f227 _ZN2CA11Transaction6commitEv + 395
22 QuartzCore 0x0337f8e2 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 96
23 CoreFoundation 0x00a6fafe __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
+ 30
24 核心基金会 0x00a6fa3d __CFRunLoopDoObservers + 381
25 核心基金会 0x00a4d7c2 __CFRunLoopRun + 1106
26 核心基金会 0x00a4cf44 CFRunLoopRunSpecific + 276
27 核心基金会 0x00a4ce1b CFRunLoopRunInMode + 123
28 图形服务 0x044bc7e3 GSEventRunModal + 88
29 图形服务 0x044bc668 GSEventRun + 104
30 UIKit 0x022bffc UIApplicationMain + 1211
31 直销商 0x0000548d 主 + 141
32 libdyld.dylib 0x03a2470d 开始 + 1
)

我从不将对齐设置为“NSTextAlignmentJustified”或“NSTextAlignmentNatural”。我无法理解。

自动高度代码:

DSBasicInfoPrototypeCell *cell = [tableView dequeueReusableCellWithIdentifier"BasicCell"];
NSString *titleText = data[@"title"];

    NSMutableAttributedString *titleAttributedText = [[NSMutableAttributedString alloc] initWithString:titleText];
    NSMutableParagraphStyle *titleParagraphStyle = [[NSMutableParagraphStyle alloc] init];
    [titleParagraphStyle setLineSpacing:3.0f];
    titleParagraphStyle.alignment = NSTextAlignmentLeft;
    [titleAttributedText addAttribute:NSParagraphStyleAttributeName value:titleParagraphStyle range:NSMakeRange(0, titleText.length)];
    cell.titleLabel.attributedText = titleAttributedText;

    cell.titleLabel.preferredMaxLayoutWidth = 280;
    [cell.titleLabel setText:data[@"title"]];
    [cell.leftSubtitleLabel setText:data[@"source"]];
    [cell.rightSubtitleLabel setText:data[@"time"]];

    [cell setNeedsUpdateConstraints];
    [cell updateConstraintsIfNeeded];
    [cell.contentView setNeedsLayout];
    [cell.contentView layoutIfNeeded];

    return [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

最后,为我的英语不好道歉。



Best Answer-推荐答案


我已经通过为段落指定文本对齐方式(而不是将其保留为默认值)设法在 iOS6 上解决了这个问题:

paragraphStyle.alignment = NSTextAlignmentLeft;

希望它也适用于你。

关于ios - NSMutableParagraphStyle 在表格单元格中为 uilabel(对齐异常)自动高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21644334/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap