Подтвердить что ты не робот

NSTextAlignmentJustified не работает в iOS7

У меня есть приложение, которое использует NSTextAlignmentJustified для NSAttributedString. В iOS 6 все работает отлично. Но одно и то же приложение, работающее в iOS 7 (симулятор или устройство не имеет значения) вообще не показывает выравнивание. Похоже, что изменение строки значительно изменилось с iOS 6 до 7.

Кто-нибудь еще столкнулся с этой проблемой? Есть ли способ сделать оправданный текстовый блок в iOS 7 (который также работает в iOS 6?)

С уважением, Маркус

4b9b3361

Ответ 1

Хорошо, я нашел способ сделать ярлык Justifiy в iOS 7: Я просто устанавливаю 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]];

Ответ 2

Настройка 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];

Ответ 3

Только для записи вы также можете добавить "\n" в качестве первого символа для простой UILabel.

        self.text = [NSString stringWithFormat:@"\n%@",TextString];
        {
            CurFrame.origin.y -= FontSize;
            self.frame = CurFrame;
        }
        self.textAlignment = NSTextAlignmentJustified;