Обоснуйте текст в UILabel iOS - PullRequest
       4

Обоснуйте текст в UILabel iOS

15 голосов
/ 22 августа 2011

У меня проблема с тем, что в 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 ]

35 голосов
/ 17 октября 2013

Существует удобный способ выравнивания текста со времен 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;
    
4 голосов
/ 22 августа 2011

Боюсь, ничего нельзя сделать - ну, не с UILabel.

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

Happy Coding:)

Обновление:

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

0 голосов
/ 25 апреля 2018

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
    
0 голосов
/ 22 августа 2011

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

0 голосов
/ 22 августа 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...