半个字在使用 nsmutableattributedstring 创建的下一行

half word is going on next line created using nsmutableattributedstring

在我开始之前,details_LabelUITextView。我有错误的命名,因为之前它是标签,但我改为 UITextView 用于复制文本和其他功能。

下面是我的

  details_Label.text = [NSString stringWithFormat:@"%@", [[[detailsArray objectAtIndex:0] valueForKey:@"Details"] substringToIndex:200]];

NSMutableAttributedString *attributedString;
attributedString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@", details_Label.text] attributes:@{ NSFontAttributeName : [self adjustDefaultFont:85], NSLigatureAttributeName: @2}];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init] ;
[paragraphStyle setAlignment:NSTextAlignmentCenter];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [details_Label.text length])];

details_Label.editable = NO;
details_Label.selectable = YES;
details_Label.tintColor = pBlackColor;

[details_Label sizeToFit];

[details_Label layoutIfNeeded];
[details_Label setTextContainerInset:UIEdgeInsetsMake(0, 0, 0, 0)];

[details_Label.textContainer setSize:details_Label.frame.size];
details_Label.frame = CGRectMake(50*iPhoneFactorX, startX, 980*iPhoneFactorX, details_Label.frame.size.height);

这就是我显示文本的方式。

问题是半个字在下一行如下图所示...

一开始我以为是因为文本太长,但是当我只取前200个字符时,问题还是来了。

details_Label.text = [NSString stringWithFormat:@"%@", [[[detailsArray objectAtIndex:0] valueForKey:@"Details"] substringToIndex:200]];

知道出了什么问题吗?


编辑 1

当我打印 NSAttributedString 时,下面是我得到的结果。

NSFont = " font-family: \"Arial-BoldMT\"; font-weight: bold; font-style: normal; font-size: 34.72pt"; NSParagraphStyle = "Alignment 1, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (\n), Lists (\n), BaseWritingDirection -1, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0"; }

我建议不要硬编码,为什么不使用情节提要来调整 Step to reah 来改变对齐方式 1). Select 您的文本视图 2).转到属性检查器并根据您的要求选择对齐方式 你也可以改变颜色和其他东西而不是硬编码

终于我发现了奇怪的地方...

我来的字符串如下

word1 word2 word3 word4 word5

然而我认为它是

word1 word2 word3 word4 word5

在我的例子中,word1 word2 word3 word4 word5 是一个单词而不是 5 个单词,剩余的文本将转到默认的下一行。

希望大家都能解决问题。

修复 是我手动重新输入所有文本,一切正常。

这可能是因为客户端复制了 HTML 文本并粘贴到文本区域。

我在浏览器中为 cPanel 执行检查元素后发现了这个奇怪的事情