2015-03-16 2 views
0

Я пытаюсь добавить подчеркивание к приписываемому тексту с использованием пользовательского шрифта (HelveticaRounded-Bold). Тем не менее, подчеркивание глючит как на Симулятор, так и на устройство. Как это:Подчеркивание сглаживания

enter image description here

Это UILabel, но я также могу воспроизвести проблему в UITextView. Кажется, что текстовый рендеринг просчитывает, где рисовать подчеркивание, на некоторых строках.

минималистичным код:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIFont *font = [UIFont fontWithName:@"HelveticaRounded-Bold" size:18]; 
    self.label.font = font; 
    self.label.numberOfLines = 0; 
    NSDictionary *attributes = @{ NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle) }; 
    self.label.attributedText = [[NSAttributedString alloc] initWithString:@"This is a test. And the test has failed. What did I do to deserve this? Why NSUnderlineStyleAttributeName? Why?" 
                   attributes:attributes]; 
} 

Забавный факт: (!) Подчеркивание не глюк в размере 24 или выше. Он также не воспроизводит, используя TTTAttributedLabel.

Любая идея, что может быть здесь?

+0

Я тоже вижу эту проблему. Вы нашли решение для этого? – lagouyn

+0

Я попробовал шрифт, который, как я знаю, проблематичен в этом отношении в TextEdit от Apple, и проблема также возникает там. Плохой шрифт, интересно? – lagouyn

ответ

0

При использовании NSUnderlineStyleThick он выглядит как глюк. Переключение на NSUnderlineStyleSingle похоже на проблему. Таким образом, вы можете установить условие для устройств без сетчатки для использования NSUnderlineStyleSingle, если вы хотите сохранить NSUnderlineStyleThick на других устройствах.

Редактирование: только что поняли, что вы используете NSUnderlineStyleSingle в своем примере кода:/В моем коде это работало для моего заданного шрифта/размера, который является только системным шрифтом. Это устранило проблему на моей стороне. Похоже, что это исправление может быть не универсальным, но оно работает в моем случае.

Смежные вопросы