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

Установка цвета шрифта NSLinkAttributeName

Я чувствую, что мне что-то не хватает, но я не могу понять, как это сделать:

Я устанавливаю атрибут в ссылку, например:

[myAttrString addAttribute:NSLinkAttributeName value:linkURL range:selectedRange];

Это работает, но ссылка синяя, и я не могу изменить цвет. Это устанавливает все, кроме ссылки на белый:

[myAttrString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:selectedRange];

Есть ли другое имя атрибута цвета, которое я, похоже, не могу найти, что относится к ссылкам?

4b9b3361

Ответ 1

  • Используйте UITextView
  • Установите UITextView linkTextAttributes так:

    textView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
    

Ответ 2

Я действительно закончил использование TTTAttributedLabel для моей метки, а затем смог сделать следующее, которое отлично работало:

NSDictionary *linkAttributes = @{(id)kCTForegroundColorAttributeName: [UIColor whiteColor],
                                 (id)kCTUnderlineStyleAttributeName: [NSNumber numberWithInt:kCTUnderlineStyleSingle]
                                 };
self.lblDescription.linkAttributes = linkAttributes;    

Ответ 3

Для быстрого (для справки для других):

// Color the links
var linkAttributes: NSMutableDictionary = NSMutableDictionary()
linkAttributes.setValue(self.appDelegate.variables.color320, forKey: NSForegroundColorAttributeName)

myTextView.linkTextAttributes = linkAttributes as [NSObject : AnyObject]

Ответ 4

txtLabel.linkAttributes = @{};

Это правильно, вызовите эту строку перед установкой любого другого атрибута

Ответ 5

Это работает для меня:

txtLabel.linkAttributes = @{};

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:expression];

{
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:result.range];

[string addAttribute:NSLinkAttributeName value:@"link" range:result.range];
}

Ответ 6

Объяснение:

Это удивительно легко, текстовые компоненты, поддерживающие обнаружение link, имеют свойство linkTextAttributes.

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

Подводя итоги, ваш стиль будет применен, а затем стиль, сохраненный в этом свойстве (в этом порядке), успешно переопределив желаемый стиль.

Решение:

Задайте это свойство пустым (linkTextAttributes = [:]) и полностью контролируйте ваши стили ссылок.


СОВЕТ. Это можно использовать для создания сенсорных элементов на вашем UITextView, который ведет себя как кнопка. Создание действительно приятного эффекта 🙃

Ответ 7

Для Swift 3

var aURL = "Http:// Your URL"
var description = "Click Me:"
let attributedString = NSMutableAttributedString(string: description + aURL)

/// Deal with link color
let foundURLRange = attributedString.mutableString.range(of: aURL)
attributedString.addAttribute(NSLinkAttributeName, value: aURL, range: foundURLRange)
textview.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.yellow]

/// Deal with description color
let foundDescriptionRange = attributedString.mutableString.range(of: description)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: foundDescriptionRange)

textview.attributedText = attributedString

введите описание изображения здесь

Ответ 8

Если вы используете TTTAttributedLabel, ответ Oren работает. Но вам нужно обратить внимание на предупреждение linkAttributes в аннотации.

/**
Словарь, содержащий по умолчанию NSAttributedStringатрибуты, которые должны применяться к обнаруженным ссылкам или вручную добавлены в текст ярлыка. Стиль ссылки по умолчанию - синий и подчеркнутый.

@warning Вы должны указать linkAttributes перед установкой автоопределения или вручную добавьте ссылки для этих атрибутов, которые будут применяться.
*/

@property (неатомный, сильный) NSDictionary * linkAttributes;