草庐IT

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

coder 2024-01-25 原文

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;

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

最佳答案

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

paragraphStyle.alignment = NSTextAlignmentLeft;

希望它也适用于你。

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

有关ios - NSMutableParagraphStyle 在表格单元格中为 uilabel(对齐异常)自动高度的更多相关文章

  1. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  2. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  3. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  4. ruby-on-rails - Prawn - 表格单元格内的链接 - 2

    我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c

  5. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  6. ruby - 如何使用 Ruby 将 CSV 文件读入 HTML 表格? - 2

    我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda

  7. ruby - 单元测试文件 I/O 方法 - 2

    我对单元测试还是比较陌生。我用Ruby编写了一个类,它接受一个文件,在该文件中搜索给定的Regex模式,替换它,然后将更改保存回文件。我希望能够为此方法编写单元测试,但我不知道我将如何去做。有人能告诉我我们如何对处理文件i/o的方法进行单元测试吗? 最佳答案 看看这个HowdoIunit-testsavingfiletothedisk?基本上这个想法是一样的,文件系统是你的类的依赖。所以引入一个可以在你的单元测试中模拟的角色/接口(interface)(这样你在单元测试时就没有依赖性);角色中的方法应该是您从文件系统中需要的所有东西

  8. ruby - 如何使用 Nokogiri 解析纯 HTML 表格? - 2

    我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315

  9. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

  10. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

随机推荐