我遇到一个问题,在iOS中我使用UILabel显示2,3行文本,我想将文本对齐,但我找不到任何选项。有关如何在标签中进行对齐文本的任何建议吗?
我把这些行从顶部开始
CGSize maximumSize = CGSizeMake(300, 9999);
NSString *textString = someString;
UIFont *textFont = [UIFont fontWithName:@"Futura" size:14];
CGSize textStringSize = [textString sizeWithFont:textFont
constrainedToSize:maximumSize
lineBreakMode:text.lineBreakMode];
CGRect textFrame = CGRectMake(10, 110, 300, textStringSize.height);
text.frame = textFrame;
所以这样的任何技巧都可以使它成为现实 感谢
答案 0 :(得分:35)
现在有一种方便的方法来证明自iOS6以来的文本。您可以创建NSAttributedString的实例,设置适当的属性并将此属性字符串分配给表示视图的文本,例如UILabel,UITextView等。这很简单:
创建NSMutableParagraphStyle的实例并设置其属性。
NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init];
paragraphStyles.alignment = NSTextAlignmentJustified; //justified text
paragraphStyles.firstLineHeadIndent = 10.0; //must have a value to make it work
为文本属性创建NSDictionary并创建属性字符串。
NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles};
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString: string attributes: attributes];
将属性字符串设置为标签。
existingLabel.attributedText = attributedString;
答案 1 :(得分:4)
无法做到我害怕 - 不是UILabel。
您可以使用 UIWebView 或第三方库,例如OHAttributedLabel
快乐编码:)
<强>更新强>
自iOS6以来,这个答案已经过时了。请参考Tankista的回答。
答案 2 :(得分:0)
可以轻松完成,但您需要使用Core Text。
继承UIView
,添加NSString
属性,为NSAttributedString
键创建kCTJustifiedTextAlignment
并传递kCTParagraphStyleSpecifierAlignment
值,然后绘制{{1}在drawrect方法中使用Quartz或CoreText。
编辑:NSAttributedString
键kCTParagraphStyleSpecifierAlignment
值应该用于创建kCTJustifiedTextAlignment
结构,并在创建CTParagraphStyleRef
时作为kCTParagraphStyleAttributeName
键的值传入
答案 3 :(得分:0)
正如@martin所提到的,我的班级OHAttributedLabel可以很容易地做到这一点。 (你会在我的github上找到它,并在SO上找到很多引用它)
答案 4 :(得分:0)
SWIFT 4.x
批准答案的版本:
创建NSMutableParagraphStyle的实例并设置其属性。
let justifiedParagraphStyles: NSMutableParagraphStyle = NSMutableParagraphStyle.init()
justifiedParagraphStyles.alignment = .justified //justified text
justifiedParagraphStyles.firstLineHeadIndent = 10.0 //must have a value to make it work
为文本属性创建NSDictionary并创建属性字符串。
let attributes = [NSAttributedStringKey.paragraphStyle: justifiedParagraphStyles]
let attributedString = NSAttributedString.init(string: string, attributes: attributes)
将属性字符串设置为标签。
existingLabel.attributedText = attributedString