Ответ 1
- Используйте
UITextView
-
Установите
UITextView
linkTextAttributes
так:textView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
Я чувствую, что мне что-то не хватает, но я не могу понять, как это сделать:
Я устанавливаю атрибут в ссылку, например:
[myAttrString addAttribute:NSLinkAttributeName value:linkURL range:selectedRange];
Это работает, но ссылка синяя, и я не могу изменить цвет. Это устанавливает все, кроме ссылки на белый:
[myAttrString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:selectedRange];
Есть ли другое имя атрибута цвета, которое я, похоже, не могу найти, что относится к ссылкам?
UITextView
Установите UITextView
linkTextAttributes
так:
textView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
Я действительно закончил использование TTTAttributedLabel для моей метки, а затем смог сделать следующее, которое отлично работало:
NSDictionary *linkAttributes = @{(id)kCTForegroundColorAttributeName: [UIColor whiteColor],
(id)kCTUnderlineStyleAttributeName: [NSNumber numberWithInt:kCTUnderlineStyleSingle]
};
self.lblDescription.linkAttributes = linkAttributes;
Для быстрого (для справки для других):
// Color the links
var linkAttributes: NSMutableDictionary = NSMutableDictionary()
linkAttributes.setValue(self.appDelegate.variables.color320, forKey: NSForegroundColorAttributeName)
myTextView.linkTextAttributes = linkAttributes as [NSObject : AnyObject]
txtLabel.linkAttributes = @{};
Это правильно, вызовите эту строку перед установкой любого другого атрибута
Это работает для меня:
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];
}
Объяснение:
Это удивительно легко, текстовые компоненты, поддерживающие обнаружение link, имеют свойство linkTextAttributes
.
Это свойство сохраняет стиль для ссылки, так как компонент может применить его при обнаружении новой ссылки.
Подводя итоги, ваш стиль будет применен, а затем стиль, сохраненный в этом свойстве (в этом порядке), успешно переопределив желаемый стиль.
Решение:
Задайте это свойство пустым (linkTextAttributes = [:]
) и полностью контролируйте ваши стили ссылок.
СОВЕТ. Это можно использовать для создания сенсорных элементов на вашем
UITextView
, который ведет себя как кнопка. Создание действительно приятного эффекта 🙃
Для 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
Если вы используете TTTAttributedLabel, ответ Oren работает. Но вам нужно обратить внимание на предупреждение linkAttributes в аннотации.
/**
Словарь, содержащий по умолчаниюNSAttributedString
атрибуты, которые должны применяться к обнаруженным ссылкам или вручную добавлены в текст ярлыка. Стиль ссылки по умолчанию - синий и подчеркнутый.@warning Вы должны указать
linkAttributes
перед установкой автоопределения или вручную добавьте ссылки для этих атрибутов, которые будут применяться.
*/@property (неатомный, сильный) NSDictionary * linkAttributes;