Выровненный текст NSAttributedString (без растягивания слов)

Я использую выровненный текст для моего NSAttributedString в моем UITextView:

var paragraphStyle = NSMutableParagraphStyle()        
paragraphStyle.alignment = NSTextAlignment.Justified;
normalAttributes.setObject(paragraphStyle, forKey: NSParagraphStyleAttributeName)

Проблема заключается в том, что он растягивает некоторые слова, чтобы добиться оправданного выравнивания, а не просто растягивает промежутки между словами. Я нахожу это очень отвлекающим и знаю, что есть способ сделать так, чтобы слова не растягивались, а только делали пробелы. Ниже приведен скриншот из моего приложения, за которым следует скриншот из приложения с той же функциональностью, которая также использует выровненный текст и точно такой же шрифт.

Как мне добиться того же эффекта?

Любая помощь будет принята с благодарностью.

2 ответа

Есть неприятный трюк, который вы можете использовать.

Вы можете использовать UIWebView и css, чтобы выполнить выравнивание так, как вы хотите. Вот образец:

NSString *css = [NSString stringWithFormat:
                 @"<html><head><style>body { background-color: white; text-align: %@; font-size: %ipx; color: black;} a { color: #172983; } </style></head><body>",
                 @"justify",
                 11];

NSMutableString *desc = [NSMutableString stringWithFormat:@"%@%@%@",
                         css,
                         @"15 Προσέχετε ἀπὸ τῶν ψευδοπροφητῶν͵ οἵτινες ἔρχονται πρὸς ὑμᾶς ἐν ἐνδύμασι προβάτων͵ ἔσωθεν δέ εἰσι λύκοι ἅρπαγες. 16 ἀπὸ τῶν καρπῶν αὐτῶν",
                         @"</body></html>"];

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(20, 80, 150, 100)];
[self.view addSubview:webView];
[webView loadHTMLString:desc baseURL:nil];

И вот результат:

Выравнивание текста в WebView

Вам просто нужно изменить параметр hyphenationFactor на 1:

      textView.layoutManager.hyphenationFactor = 1
Другие вопросы по тегам