我有一个使用NSTextAlignmentJustified
NSAttributedString
的应用。在 iOS 6 中,一切都运行良好。但是在 iOS 7 中运行的相同应用程序(模拟器或设备没有任何区别)显示没有任何Justify。此外,从 iOS 6 到 7 ,线条间距也发生了巨大变化。
其他人遇到过这个问题?有没有办法在iOS 7中制作合理的Textblock(在iOS 6中也可以使用?)
此致 马库斯
答案 0 :(得分:27)
好的,我找到了一种在iOS 7中制作标签Justify的方法: 我只是将NSBaselineOffsetAttributeName设置为0。
不知道它为什么有效,但它确实有效。
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentJustified;
NSAttributedString *string = [[NSAttributedString alloc] initWithString:rawString
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
paragraphStyle, NSParagraphStyleAttributeName ,
[NSNumber numberWithFloat:0],NSBaselineOffsetAttributeName,
nil]];
答案 1 :(得分:8)
在firstLineHeadIndent
上设置NSMutableParagraphStyle
也会有效。
NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init];
paragraphStyles.alignment = NSTextAlignmentJustified; // To justified text
paragraphStyles.firstLineHeadIndent = 0.05; // IMP: must have a value to make it work
NSString *stringTojustify = @"No one wakes up excited to see more advertising, no one goes to sleep thinking about the ads they’ll see tomorrow.";
NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles};
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:stringTojustify attributes:attributes];
self.lblQuote.attributedText = attributedString;
self.lblQuote.numberOfLines = 0;
[self.lblQuote sizeToFit];
答案 2 :(得分:1)
只是为了记录,你还可以追加一个' \ n'作为普通UILabel的第一个角色。
self.text = [NSString stringWithFormat:@"\n%@",TextString];
{
CurFrame.origin.y -= FontSize;
self.frame = CurFrame;
}
self.textAlignment = NSTextAlignmentJustified;