При настройке шрифта в configureSpeedLabel и configureProgressLabel ниже, если я устанавливаю шрифт с помощью UIFont SpeedLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24), то трек прогресса обновляется постепенно, как и ожидалось (Видео: Отслеживание обновления YES), но когда я устанавливаю шрифт с помощью systemFont, например SpeedLabel.font = .systemFont(ofSize: 24, Weight: .light), тогда трек прогресса не обновляется постепенно ( Видео: Трек НЕ обновляется).
Почему это происходит? Как настроить использование systemFont и обеспечить обновление трека должным образом?
Я считаю, что это связано с тем, как становятся переменные скорость и прогресс обновился с помощью DidSet, но не знаю, как определить проблему.
import UIKit
class CircularProgressView: UIView {
var progressLayer = CAShapeLayer()
var trackLayer = CAShapeLayer()
var speedLabel = UILabel()
var progressLabel = UILabel()
var uploadDownloadLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
configureSpeedLabel()
configureProgressLabel()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
convenience init(withType type: String) {
self.init()
configureUploadDownloadLabel(withType: type)
}
override func layoutSubviews() {
super.layoutSubviews()
createCircularPath()
}
func configureUploadDownloadLabel(withType type: String) {
uploadDownloadLabel = UILabel()
uploadDownloadLabel.text = type
uploadDownloadLabel.translatesAutoresizingMaskIntoConstraints = false
// uploadDownloadLabel.font = .systemFont(ofSize: 24, weight: .regular)
uploadDownloadLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24)
uploadDownloadLabel.textColor = UIColor.black
uploadDownloadLabel.isOpaque = true
self.addSubview(uploadDownloadLabel)
NSLayoutConstraint.activate([
uploadDownloadLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor),
uploadDownloadLabel.topAnchor.constraint(equalTo: self.topAnchor, constant: -35)
])
}
var progressColor = UIColor.white {
didSet {
progressLayer.strokeColor = progressColor.cgColor
print("didSet progressColor")
}
}
var trackColor = UIColor.white {
didSet {
trackLayer.strokeColor = trackColor.cgColor
print("didSet trackColor")
}
}
var speed = 0 {
didSet {
speedLabel.text = String(speed) + " Mbps"
}
}
var progress = 0.0 {
didSet {
progressLayer.strokeEnd = progress
progressLabel.text = String(format: "%.0f", (progress*100).rounded()) + "%"
}
}
fileprivate func configureSpeedLabel() {
speedLabel.translatesAutoresizingMaskIntoConstraints = false
speedLabel.text = String(speed) + " Mbps"
speedLabel.font = .systemFont(ofSize: 24, weight: .light)
// speedLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24)
speedLabel.textColor = UIColor.black
speedLabel.isOpaque = true
self.addSubview(speedLabel)
NSLayoutConstraint.activate([
speedLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor),
speedLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor)
])
}
fileprivate func configureProgressLabel() {
progressLabel.translatesAutoresizingMaskIntoConstraints = false
progressLabel.text = String(format: "%.0f", (progress*100).rounded()) + "%"
progressLabel.font = .systemFont(ofSize: 24, weight: .thin)
// progressLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24)
progressLabel.textColor = UIColor.black
progressLabel.isOpaque = true
self.addSubview(progressLabel)
NSLayoutConstraint.activate([
progressLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor),
progressLabel.topAnchor.constraint(equalTo: self.bottomAnchor, constant: 10)
])
}
fileprivate func createCircularPath() {
self.backgroundColor = UIColor.clear
self.layer.cornerRadius = self.frame.width/2
let path = UIBezierPath(arcCenter: CGPoint(x: frame.width/2, y: frame.height/2), radius: (frame.width - 1.5)/2, startAngle: CGFloat(-0.5 * .pi), endAngle: CGFloat(1.5 * .pi), clockwise: true)
trackLayer.path = path.cgPath
trackLayer.fillColor = UIColor.clear.cgColor
trackLayer.strokeColor = trackColor.cgColor
trackLayer.opacity = 0.5
trackLayer.lineWidth = 10.0
trackLayer.strokeEnd = 1.0
self.layer.addSublayer(trackLayer)
progressLayer.path = path.cgPath
progressLayer.fillColor = UIColor.clear.cgColor
progressLayer.strokeColor = progressColor.cgColor
progressLayer.lineWidth = 10.0
progressLayer.strokeEnd = 0.0
self.layer.addSublayer(progressLayer)
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... -vs-uifont
Обновление текста метки, когда шрифт установлен с помощью systemFont и UIFont ⇐ IOS
Программируем под IOS
1720053882
Anonymous
При настройке шрифта в configureSpeedLabel и configureProgressLabel ниже, если я устанавливаю шрифт с помощью UIFont SpeedLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24), то трек прогресса обновляется постепенно, как и ожидалось (Видео: Отслеживание обновления YES), но когда я устанавливаю шрифт с помощью systemFont, например SpeedLabel.font = .systemFont(ofSize: 24, Weight: .light), тогда трек прогресса не обновляется постепенно ( Видео: Трек НЕ обновляется).
Почему это происходит? Как настроить использование systemFont и обеспечить обновление трека должным образом?
Я считаю, что это связано с тем, как становятся переменные скорость и прогресс обновился с помощью DidSet, но не знаю, как определить проблему.
import UIKit
class CircularProgressView: UIView {
var progressLayer = CAShapeLayer()
var trackLayer = CAShapeLayer()
var speedLabel = UILabel()
var progressLabel = UILabel()
var uploadDownloadLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
configureSpeedLabel()
configureProgressLabel()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
convenience init(withType type: String) {
self.init()
configureUploadDownloadLabel(withType: type)
}
override func layoutSubviews() {
super.layoutSubviews()
createCircularPath()
}
func configureUploadDownloadLabel(withType type: String) {
uploadDownloadLabel = UILabel()
uploadDownloadLabel.text = type
uploadDownloadLabel.translatesAutoresizingMaskIntoConstraints = false
// uploadDownloadLabel.font = .systemFont(ofSize: 24, weight: .regular)
uploadDownloadLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24)
uploadDownloadLabel.textColor = UIColor.black
uploadDownloadLabel.isOpaque = true
self.addSubview(uploadDownloadLabel)
NSLayoutConstraint.activate([
uploadDownloadLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor),
uploadDownloadLabel.topAnchor.constraint(equalTo: self.topAnchor, constant: -35)
])
}
var progressColor = UIColor.white {
didSet {
progressLayer.strokeColor = progressColor.cgColor
print("didSet progressColor")
}
}
var trackColor = UIColor.white {
didSet {
trackLayer.strokeColor = trackColor.cgColor
print("didSet trackColor")
}
}
var speed = 0 {
didSet {
speedLabel.text = String(speed) + " Mbps"
}
}
var progress = 0.0 {
didSet {
progressLayer.strokeEnd = progress
progressLabel.text = String(format: "%.0f", (progress*100).rounded()) + "%"
}
}
fileprivate func configureSpeedLabel() {
speedLabel.translatesAutoresizingMaskIntoConstraints = false
speedLabel.text = String(speed) + " Mbps"
speedLabel.font = .systemFont(ofSize: 24, weight: .light)
// speedLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24)
speedLabel.textColor = UIColor.black
speedLabel.isOpaque = true
self.addSubview(speedLabel)
NSLayoutConstraint.activate([
speedLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor),
speedLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor)
])
}
fileprivate func configureProgressLabel() {
progressLabel.translatesAutoresizingMaskIntoConstraints = false
progressLabel.text = String(format: "%.0f", (progress*100).rounded()) + "%"
progressLabel.font = .systemFont(ofSize: 24, weight: .thin)
// progressLabel.font = UIFont(name: "TimesNewRomanPSMT", size: 24)
progressLabel.textColor = UIColor.black
progressLabel.isOpaque = true
self.addSubview(progressLabel)
NSLayoutConstraint.activate([
progressLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor),
progressLabel.topAnchor.constraint(equalTo: self.bottomAnchor, constant: 10)
])
}
fileprivate func createCircularPath() {
self.backgroundColor = UIColor.clear
self.layer.cornerRadius = self.frame.width/2
let path = UIBezierPath(arcCenter: CGPoint(x: frame.width/2, y: frame.height/2), radius: (frame.width - 1.5)/2, startAngle: CGFloat(-0.5 * .pi), endAngle: CGFloat(1.5 * .pi), clockwise: true)
trackLayer.path = path.cgPath
trackLayer.fillColor = UIColor.clear.cgColor
trackLayer.strokeColor = trackColor.cgColor
trackLayer.opacity = 0.5
trackLayer.lineWidth = 10.0
trackLayer.strokeEnd = 1.0
self.layer.addSublayer(trackLayer)
progressLayer.path = path.cgPath
progressLayer.fillColor = UIColor.clear.cgColor
progressLayer.strokeColor = progressColor.cgColor
progressLayer.lineWidth = 10.0
progressLayer.strokeEnd = 0.0
self.layer.addSublayer(progressLayer)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78704519/updating-label-text-when-font-set-with-systemfont-vs-uifont[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия