在UILabel iOS中对齐文本

时间:2011-08-22 10:17:25

标签: iphone uilabel

我遇到一个问题,在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;

所以这样的任何技巧都可以使它成为现实 感谢

5 个答案:

答案 0 :(得分:35)

现在有一种方便的方法来证明自iOS6以来的文本。您可以创建NSAttributedString的实例,设置适当的属性并将此属性字符串分配给表示视图的文本,例如UILabel,UITextView等。这很简单:

  1. 创建NSMutableParagraphStyle的实例并设置其属性。

    NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init];
    paragraphStyles.alignment = NSTextAlignmentJustified;      //justified text
    paragraphStyles.firstLineHeadIndent = 10.0;                //must have a value to make it work
    
  2. 为文本属性创建NSDictionary并创建属性字符串。

    NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles};
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString: string attributes: attributes];
    
  3. 将属性字符串设置为标签。

    existingLabel.attributedText = attributedString;
    

答案 1 :(得分:4)

无法做到我害怕 - 不是UILabel。

您可以使用 UIWebView 或第三方库,例如OHAttributedLabel

快乐编码:)

<强>更新

自iOS6以来,这个答案已经过时了。请参考Tankista的回答。

答案 2 :(得分:0)

可以轻松完成,但您需要使用Core Text。

继承UIView,添加NSString属性,为NSAttributedString键创建kCTJustifiedTextAlignment并传递kCTParagraphStyleSpecifierAlignment值,然后绘制{{1}在drawrect方法中使用Quartz或CoreText。

编辑:NSAttributedStringkCTParagraphStyleSpecifierAlignment值应该用于创建kCTJustifiedTextAlignment结构,并在创建CTParagraphStyleRef时作为kCTParagraphStyleAttributeName键的值传入

答案 3 :(得分:0)

正如@martin所提到的,我的班级OHAttributedLabel可以很容易地做到这一点。 (你会在我的github上找到它,并在SO上找到很多引用它)

答案 4 :(得分:0)

SWIFT 4.x

批准答案的版本:

  1. 创建NSMutableParagraphStyle的实例并设置其属性。

    let justifiedParagraphStyles: NSMutableParagraphStyle = NSMutableParagraphStyle.init()
    justifiedParagraphStyles.alignment = .justified      //justified text
    justifiedParagraphStyles.firstLineHeadIndent = 10.0  //must have a value to make it work
    
  2. 为文本属性创建NSDictionary并创建属性字符串。

    let attributes = [NSAttributedStringKey.paragraphStyle: justifiedParagraphStyles]
    let attributedString = NSAttributedString.init(string: string, attributes: attributes)
    
  3. 将属性字符串设置为标签。

    existingLabel.attributedText = attributedString