2017-11-16 42 views
7

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ą.

+0

https://stackoverflow.com/a/44438304/2303865 –

+2

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

+0

https://stackoverflow.com/questions/21629784/how-to-make-a-clickable-link-in-an-nsattributedstring-for-a –

Odpowiedz

2

Udało mi się również znaleźć rozwiązanie dla szybkiego 4.

label.configureLinkAttribute = { (type, attributes, isSelected) in 
       var atts = attributes 
       switch type { 
       case customType1: 
        atts[NSAttributedStringKey.font.rawValue] = UIFont(name: self.labelTc.font.fontName, size: 15.0) 
        atts[NSAttributedStringKey.underlineStyle.rawValue] = NSUnderlineStyle.styleSingle.rawValue 
        break 

       default:() 
       } 
       return atts 
      } 
+0

Jeśli jesteś śliczny upewnij się, że twoja odpowiedź jest właściwym rozwiązaniem, upewnij się, że akceptujesz (zielony odznak). –