Я пытаюсь обновить поле заголовка кнопки с помощью NSAttributedString. Итак, я попытался установить приписываемый заголовок, но он не работает должным образом. Он не отображает правильные атрибутные свойства, которые я ввел в NSAttributedString. Я пришел к выводу, что либо мой метод инициализации NSAttributedString неверен, либо кнопка переопределяет цвет.
Я получаю необработанное значение строки, но не с атрибутированными свойствами.
Структура карты
struct Card {
private var shape : Shape = Shape.none
private var color : Color = Color.none
private var number : Number = Number.none
private var shading : Shading = Shading.none
//These attributes are not showing up
private var strokeTextAttributes : [NSAttributedStringKey:Any] = [NSAttributedStringKey:Any]()
private var manipulatedValue : String = ""
init(shape : Shape, color : Color, number : Number, shading : Shading){
self.shape = shape
self.color = color
self.number = number
self.shading = shading
//How many multiples of the shape should be on the card
for _ in 1...number.rawValue{
manipulatedValue.append(shape.rawValue)
}
//0 is the NSStringKey, 1 is the UIColor
strokeTextAttributes[color.rawValue.0] = color.rawValue.1
}
func rawValue() -> NSAttributedString{
return NSAttributedString(string: manipulatedValue, attributes: strokeTextAttributes)
}
}
ViewController Класс
class ViewController: UIViewController {
private var game : Set = Set()
override func viewDidLoad() {
super.viewDidLoad()
for index in 0...game.cardsInPlay.count-1{
cardButtons[index].layer.borderWidth = 3.0
cardButtons[index].layer.borderColor = UIColor.black.cgColor
cardButtons[index].layer.cornerRadius = 8.0
cardButtons[index].setAttributedTitle(game.cardsInPlay[index]!.rawValue(), for: UIControlState.normal)
}
}
@IBOutlet var cardButtons: [UIButton]!
}
Я очень старался кодировать значения в инициализаторе структуры Card. Но тот же случай повторится. Кнопка отображает правильную форму карты и номер, но не правильный цвет. Этот цвет будет цветом по умолчанию в инспекторе Main.Storyboard. Светло-синий. Проблема в том, что либо словарь не работает, поэтому strokeTextAttributes не содержит ничего значимого, либо UIButton делает что-то глупое.
print("attributes: \(strokeTextAttributes)")
в своюCard.rawValue
функцию, а затем обновите свой вопрос, указав точный результат пары отпечатков. - person rmaddy   schedule 08.07.2018strokeColor
, но не установилиstrokeWidth
. - person Larme   schedule 08.07.2018