от Apple : для обеспечения согласованности предполагаемое поведение предназначено для диапазонов, представляющих ссылки (указанные через NSLinkAttributeName), которые должны отображаться с использованием внешнего вида ссылки по умолчанию. Таким образом, текущее поведение - это ожидаемое поведение.
Таким образом, это означает, что это ограничение UILabel и оно преднамеренное.
Однако есть обходной путь. Просто замените NSLink пользовательским атрибутом.
mutableHtmlString.EnumerateAttribute(linkAttributeName, new NSRange(0, mutableHtmlString.Length), NSAttributedStringEnumeration.LongestEffectiveRangeNotRequired,
(NSObject value, NSRange range, ref bool stop) =>
{
var attrHyperlink = new UIStringAttributes
{
UnderlineStyle = NSUnderlineStyle.None,
ForegroundColor = UIColor.Red,
};
if (value != null && value is NSUrl url)
{
mutableHtmlString.AddAttribute(customAttributeName, value, range);
mutableHtmlString.RemoveAttribute("NSLink", range);
mutableHtmlString.AddAttributes(attrHyperlink, range);
}
});
control.AttributedText = mutableHtmlString;
Вы можете использовать customAttributeName
, чтобы найти строку при необходимости.
Благодаря https://exceptionshub.com/color-attribute-is-ignored-in-nsattributedstring-with-nslinkattributename.html