Есть ли более простой способ стилизации UILabel, чем создание пользовательских классов, которые переопределяют UILabel. В настоящее время мне нужна куча стилей с разными размерами шрифта и цветами текста.
Многоразовые стили UILabel в Swift, Xcode 6.4
Ответы (1)
Я не знаю, что это хорошая практика... но вы могли бы что-то вроде:
extension UILabel {
@IBInspectable var myStyle: String {
set {
switch newValue {
case "style1":
self.font = UIFont.systemFontOfSize(17)
self.textColor = UIColor.blackColor()
case "style2":
self.font = UIFont.boldSystemFontOfSize(32)
self.textColor = UIColor.redColor()
default:
break
}
}
get {
return ""
}
}
}
Возможно, вам следует определить подкласс с @IBDesignable
. Потому что это показывает гораздо лучший предварительный просмотр в IB. И вы можете использовать функцию Editor > Size To Fit
или Auto Layout в IB.
@IBDesignable class StyledLabel: UILabel {
@IBInspectable var myStyle: String = "" {
didSet {
switch self.myStyle {
case "style1":
self.font = UIFont.systemFontOfSize(17)
self.textColor = UIColor.blackColor()
case "style2":
self.font = UIFont.boldSystemFontOfSize(32)
self.textColor = UIColor.redColor()
default:
break
}
}
}
}
person
rintaro
schedule
13.08.2015
Это именно то, что я искал! Теперь мне просто нужно знать, является ли это хорошей практикой или нет.
- person user1354603; 13.08.2015
Весь смысл этого вопроса заключался в том, чтобы избежать использования пользовательских классов, потому что я хотел избежать установки пользовательских классов для всех моих UILabels :).. Предварительный просмотр менее важен, чем написание меньшего количества кода, поэтому пока я буду придерживаться того, что вы написали до редактировать
- person user1354603; 13.08.2015
Второй вариант (создание класса) я протестировал, и он действительно великолепен. Теперь я могу просто изменить имя класса своего пользовательского интерфейса и стиля по своему усмотрению. Действительно полезно.
- person Touhid; 04.11.2020
font
иtextColor
для стандартногоUILabel
? - person hennes   schedule 13.08.2015UIAppearance
. Однако в Swift он ограничен. - person hennes   schedule 13.08.2015