1
我一直试图在iOS中,更改字体在本地的UIDatePicker,我做到了,但也有一些悬而未决的细节:迅速的UIDatePicker更换字体,字体颜色,字体大小等
我使用扩展的UIDatePicker改变字体在它的标签:
extension UIDatePicker {
func stylizeView(view: UIView? = nil) {
let view = view ?? self
for subview in view.subviews {
if let label = subview as? UILabel {
if let text = label.text {
print("UIDatePicker :: sylizeLabel :: \(text)\n")
label.font = UIFont(name: "MyriadPro-Light", size: 17)!
}
} else { stylizeView(subview) }
}
}}
所以,你可以自定义字体深刻:
struct DatePickerStyle {
let tintColor = UIColor(hex: 0xFFFFFF)
let font = UIFont(name: "MyriadPro-Light", size: 17)!
let fontColor = UIColor(hex: 0x000000)
let fontKern: CGFloat = 0.2
var paragraphStyle: NSMutableParagraphStyle {
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 4
paragraphStyle.lineHeightMultiple = 1
paragraphStyle.alignment = .Right
return paragraphStyle
}}
extension UIDatePicker {
func stylizeView(view: UIView? = nil) {
let style = DatePickerStyle()
let view = view ?? self
for subview in view.subviews {
if let label = subview as? UILabel {
if let text = label.text {
print("UIDatePicker :: sylizeLabel :: \(text)\n")
let attributedString = NSMutableAttributedString(string: text)
let attributedStringRange = NSMakeRange(0, attributedString.length)
attributedString.addAttributes([
NSParagraphStyleAttributeName: style.paragraphStyle,
NSFontAttributeName: style.font,
NSForegroundColorAttributeName: style.fontColor,
NSKernAttributeName: style.fontKern
], range: attributedStringRange)
//label.font = style.font
label.tintColor = style.fontColor
label.attributedText = attributedString
}
} else { stylizeView(subview) }
}
}
}
在扩展此功能上的UIDatePicker的任何控制事件来实现:
datePicker.addTarget(self, action: #selector(CellWithDatePicker.updateDatePickerStyle), forControlEvents: .AllEvents)
&
func updateDatePickerStyle() {
print(":: updateDatePickerStyle")
datePicker.stylizeView()
}
问题1:
当我初始化的UIDatePicker,拾取器的字体仍然是SanFrancisco的。
但是,当我在的UIDatePicker改变后,字体改为我的字体
我试图执行datePicker.stylizeView()或self.stylizeView()上的每一个阶段UIDatePicker生命周期,但它只能更改DatePicker的选定行。
问题2:
虽然我pic.2后旋转的DatePicker时的DatePicker的所有标签被设定为newFont,新的标签,其是所选择的线的外侧仍与旧字体(SanFrancisco的)。当我停止旋转DatePicker时,所有标签都更新为newFont。
不知道如何解决它?