Używałem ActiveLabel jako biblioteki stron trzecich, aby utworzyć łącze w etykiecie dla konkretnych słów. Kod działa poprawnie dla Swift 3 & 3.2. ale nie działa dla szybkiej 4.Jak wykryć link w UILabel w szybkim 4?
poniższy kod użyłem
let customType1 = ActiveType.custom(pattern: "\\sTerms & Conditions\\b") //Looks for "are"
labelTc.enabledTypes.append(customType1)
labelTc.customize { (label) in
labelTc.text = "UserAgreement".localized
label.numberOfLines = 0
label.lineSpacing = 4
label.textColor = UIColor(red: 131/255, green: 147/255, blue: 168/255, alpha: 1)
//Custom types
label.customColor[customType1] = Constant.AppColor.greenMeadow
label.customSelectedColor[customType1] = Constant.AppColor.greenMeadow
label.configureLinkAttribute = { (type, attributes, isSelected) in
var atts = attributes
switch type {
case customType1:
atts[NSAttributedStringKey.font._rawValue as String] = UIFont(name: self.labelTc.font.fontName, size: 15.0)
atts[NSAttributedStringKey.underlineStyle.rawValue] = NSUnderlineStyle.styleSingle
break
case .mention:
break
case .hashtag:
break
case .url:
break
case .custom(let pattern):
break
default :
break
}
return atts
}
Może mi ktoś podać rozwiązanie za pomocą natywnego kodu zamiast korzystania z biblioteki przez stronę trzecią.
https://stackoverflow.com/a/44438304/2303865 –
Swift 4 atrybuty typu powinien mieć '[NSAttributedStringKey: dowolny] 'zatem przyporządkowanie do nich powinien być' atts [.font] = UIFont (...) '. "Nie działa" nie jest bardzo dobrym opisem problemu. Biblioteka jest open source, zajrzyj do kodu, wszystko tam jest. – Sulthan
https://stackoverflow.com/questions/21629784/how-to-make-a-clickable-link-in-an-nsattributedstring-for-a –