Обосновать текст в UILabel iOS

У меня возникла проблема, что в 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;

так что любой трюк, подобный этому, чтобы сделать его просто Благодаря

Ответ 1

Теперь есть удобный способ для выравнивания текста с 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;
    

Ответ 2

Не может быть сделано. Я боюсь - ну не с UILabel.

Вы можете использовать UIWebView или стороннюю библиотеку, такую ​​как OHAttributedLabel

Счастливое кодирование:)

Update:

Этот ответ устарел с iOS6. Пожалуйста, обратитесь к ответу Tankista.

Ответ 3

Это можно сделать легко, но вам нужно использовать Core Text.

subclass a UIView, добавьте свойство NSString, создайте значение NSAttributedString и передайте kCTJustifiedTextAlignment для ключа kCTParagraphStyleSpecifierAlignment, затем нарисуйте NSAttributedString с помощью Quartz или CoreText в методе drawrect.

edit: kCTParagraphStyleSpecifierAlignment Значение ключа kCTJustifiedTextAlignment должно использоваться для создания структуры CTParagraphStyleRef и передано как значение для ключа kCTParagraphStyleAttributeName при создании NSAttributedString.

Ответ 4

Как упоминается @martin, мой класс OHAttributedLabel может сделать это очень легко. (Вы найдете его на моем github, а также найдете множество ссылок на него на SO также)