半个字在使用 nsmutableattributedstring 创建的下一行
half word is going on next line created using nsmutableattributedstring
在我开始之前,details_Label
是 UITextView
。我有错误的命名,因为之前它是标签,但我改为 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 执行检查元素后发现了这个奇怪的事情
在我开始之前,details_Label
是 UITextView
。我有错误的命名,因为之前它是标签,但我改为 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 文本并粘贴到文本区域。