Sunday, November 26, 2017

How to detect link in UILabel in swift 4?

Leave a Comment

I was using ActiveLabel as third party library to make link in a label for particular words.The code works fine for Swift 3 & 3.2. but does not work for swift 4.

Below code i used

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                 } 

Can anyone give me solution using native code instead of using third party library.

1 Answers

Answers 1

I was able to find out the solution for swift 4 as well.

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             } 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment