Я пытаюсь поместить string на кнопку с небольшим изображением и текстом, поэтому я использую NSMutableAttributedString и NSAttributedString. Насколько я могу судить, ключ foregroundColor в словаре должен обновлять цвет текста, но, похоже, он не работает. fgColor — это UIColor.white, а bgColor — это UIColor.black, но мне не удается распечатать это, чтобы проверить. Кто-нибудь может дать совет? Код:
let myFont = UIFont(name: "HelveticaNeue-Light", size: 8)
let dict1:[NSAttributedString.Key:Any] = [
NSAttributedString.Key.font:myFont!,
NSAttributedString.Key.foregroundColor : fgColor,
NSAttributedString.Key.strokeColor : fgColor,
NSAttributedString.Key.backgroundColor : bgColor
]
let fullString = NSMutableAttributedString()
let imageAttachment = NSTextAttachment()
imageAttachment.image = UIImage(named:"ThumbsUpGreen")
let imageString = NSAttributedString(attachment: imageAttachment)
fullString.append(imageString)
fullString.append(NSAttributedString(string: " "+String(upCount), attributes: dict1))
thumbUpButton?.setAttributedTitle(fullString, for: .normal)
contentView.addSubview(thumbUpButton!)





Если вы не планируете использовать разные цвета в тексте, в качестве альтернативы вы можете использовать методы UIButton для раскрашивания:
thumbUpButton?.titleLabel?.textColor = fgColor
thumbUpButton?.backgroundColor = bgColor
Чтобы ответить на мой предыдущий комментарий для тех, кто читает здесь: TableViewCells повторно используются, когда представление появляется снова. Но обратные вызовы tableview выполняются, поэтому в той, которая удаляет ячейку из очереди и возвращает «новую», вы можете проверить существование кнопки и обновить ее titleLabel, если кнопка уже существует (что это и делает в моем случае.)
Спасибо. Это сработало. Кнопки находятся в TableViewCell, который находится в ViewController, который находится на одной вкладке в TabController. Теперь мне нужно выяснить, когда пользователь переключается на другую вкладку и меняет цвет фона, а затем снова переключается на эту вкладку, как обновить метку заголовка кнопки внутри TableViewCell.