NSAttributedString на UIButton

let strNo = "2222555" // size 18, this should be bold

let remainingStr = "Call to" + "\(strNo)" + "Number" 

Теперь, в моем UIButton, скажем кнопку, Как установить этот заголовок "Позвонить на номер 2222555 " И мне нужно изменить размер в соответствии с устройством, поэтому я должен сделать это путем кодирования.

Обновить

Мне нужно, как на следующем изображении.

И нужно изменить размер заголовка путем кодирования. Выше приведен скриншот с iPhone 7, в iPhone 5 он становится больше, а в iPad - меньше, поэтому я должен установить размер заголовка в соответствии с требованиями.

Любая помощь будет ощутимой.

Спасибо

1 ответ

Решение

Я нашел ответ, изо всех сил пытаясь несколько дней. И это довольно просто.

guard
            let font1 = UIFont(name: "HelveticaNeue-Bold", size: 22),
            let font2 = UIFont(name: "HelveticaNeue-Medium", size: 22)  else { return }

        let dict1:[String:Any] = [
            //            NSUnderlineStyleAttributeName:NSUnderlineStyle.styleSingle.rawValue,
            NSFontAttributeName:font2,
            NSParagraphStyleAttributeName:style,
            NSForegroundColorAttributeName: UIColor.white
        ]

        let dict2:[String:Any] = [
            //            NSUnderlineStyleAttributeName:NSUnderlineStyle.styleNone.rawValue,
            NSFontAttributeName:font1,
            NSParagraphStyleAttributeName:style,
            NSForegroundColorAttributeName: UIColor.white,
            //            NSFontAttributeName: UIFont.boldSystemFont(ofSize: 20)
        ]

        let dict3:[String:Any] = [
            //            NSUnderlineStyleAttributeName:NSUnderlineStyle.styleNone.rawValue,
            NSFontAttributeName:font2,
            NSParagraphStyleAttributeName:style,
            NSForegroundColorAttributeName: UIColor.white
        ]

        let dict4:[String:Any] = [
            //            NSUnderlineStyleAttributeName:NSUnderlineStyle.styleNone.rawValue,
            NSFontAttributeName:font1,
            NSParagraphStyleAttributeName:style,
            NSForegroundColorAttributeName: UIColor.white
        ]

        let attString = NSMutableAttributedString()
        attString.append(NSAttributedString(string: "Call to", attributes: dict1))
        attString.append(NSAttributedString(string: " 2222555 ", attributes: dict2))
        attString.append(NSAttributedString(string: " To Book Your Skip ", attributes: dict3))
        attString.append(NSAttributedString(string: "NOW", attributes: dict4))

        btnCall.setAttributedTitle(attString, for: .normal)

И работает отлично, как и ожидалось.

Другие вопросы по тегам