在tableview重新加载后崩溃
这个问题只发生在iOS6上,iOS7很好。
例外说明:
NSTextAlignmentJustified和NSTextAlignmentNatural在绘制NSString (null)时是无效的对齐值(
0 CoreFoundation 0x00a702e exceptionPreprocess + 206
1 libobjc.A.dylib 0x03152e7e objc_exception_throw + 44
2 CoreFoundation 0x00aa6deb +NSException引发:格式:+ 139
_drawInRect:withFont:lineBreakMode:alignment:lineSpacing:includeEmoji:truncationRect:+ 88 3 UIKit 0x022ea8ec -NSString(UIStringDrawing)
drawInRect:withFont:lineBreakMode:alignment:lineSpacing:includeEmoji:+ 99 4 UIKit 0x022ea88f -NSString(UIStringDrawing)
drawInRect:withFont:lineBreakMode:alignment:lineSpacing:+ 91 5 UIKit 0x022e827 -NSString(UIStringDrawing)
_legacy_drawTextInRect:baselineCalculationOnly:+3433 6 UIKit 0x0241ce73 -UILabel
7 UIKit 0x0241cf76 -UILabel _drawTextInRect:baselineCalculationOnly:+ 160
8 UIKit 0x0241bcd9 -UILabel drawTextInRect:+ 548
9 UIKit 0x0241e098 -UILabel drawRect:+ 98
10 UIKit 0x0230fe6e (CALayerDelegate)拖曳层: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
_ZN2CA5Layer17display_if_neededEPNS_11TransactionE +328 18 QuartzCore 0x034000e2
_ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 38 19 QuartzCore 0x0340015c
_ZN2CA7Context18commit_transactionEPNS_11TransactionE +324 20 QuartzCore 0x0337e0bc
21 QuartzCore 0x0337f227 _ZN2CA11Transaction6commitEv + 395
_ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 96 22 QuartzCore 0x0337f8e2
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 30 23 CoreFoundation 0x00a6fafe
24 CoreFoundation 0x00a6fa3d __CFRunLoopDoObservers + 381
25 CoreFoundation 0x00a4d7c2 __CFRunLoopRun + 1106
26 CoreFoundation 0x00a4cf44 CFRunLoopRunSpecific + 276
27 CoreFoundation 0x00a4ce1b CFRunLoopRunInMode + 123
28 GraphicsServices 0x044bc7e3 GSEventRunModal + 88
29 GraphicsServices 0x044bc668 GSEventRun + 104
30 UIKit 0x022 UIKit+ 1211
31 DirectSeller 0x0000548 d main + 141
32 libdyld.dylib 0x03a2470d start +1)
我从未将对齐设置为"NSTextAlignmentJustified“或"NSTextAlignmentNatural".i无法理解。
自动高度代码:
dequeueReusableCellWithIdentifier:@"BasicCell";DSBasicInfoPrototypeCell *cell = tableView 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;最后,为我糟糕的英语道歉。
发布于 2014-05-26 07:30:24
通过为段落指定文本对齐(而不是让它默认),我设法在iOS6上解决了这个问题:
paragraphStyle.alignment = NSTextAlignmentLeft;希望它也对你有用。
发布于 2014-04-06 17:55:41
我也有同样的问题,但我找不到根本原因。我认为这与在属性文本中使用ParagraphStyle有关。
我的解决办法是检查OS版本,如果小于7.0版本,我将使用标准文本而不是AttributedText。
这不是最好的解决方案,但它至少让我的应用停止在iOS6.1上崩溃,直到我找到更好的解决方案。
NSString* text = @"Text\nText";
NSString *ver = [[UIDevice currentDevice] systemVersion];
float ver_float = [ver floatValue];
if (ver_float >= 7.0)
{
NSMutableAttributedString* attributedText = [[NSMutableAttributedString alloc] initWithString:text];
NSMutableParagraphStyle* paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.paragraphSpacing = 6.0f;
[attributedText addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, text.length)];
[self.descLabel setAttributedText:attributedText];
}
else
{
[self.descLabel setText:@"text"];
}https://stackoverflow.com/questions/21644334
复制相似问题