Уменьшите размер шрифта UILabel до точной точки, используя CGAffineTransform - PullRequest
0 голосов
/ 08 января 2019

У меня есть UITableView и UINavigationBar с его пользовательским заголовком. Я хочу уменьшить размер шрифта метки заголовка при прокрутке вниз и увеличить при прокрутке вверх.

Вот мой код

override func viewDidLoad() {
    super.viewDidLoad()
    myLabel.font = UIFont(name: "Arial", size: 17)
}

Здесь я устанавливаю размер шрифта для моей метки.

А потом я преобразую размер шрифта примерно так:

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    let offset = scrollView.contentOffset.y
    let scale = min(max(1.0 - offset / 200.0, 0.0), 1.0)
    myLabel.transform = CGAffineTransform(scaleX: scale, y: scale)
}

Проблема в том, что минимальная точка установлена ​​равной 0, но я хочу, чтобы моя метка уменьшилась до 11 пунктов и т. Д.

Может кто-нибудь помочь мне отредактировать мой код?

1 Ответ

0 голосов
/ 09 января 2019

рассчитать окончательную шкалу по этой формуле

let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)

тогда используйте finalFontSize здесь

let scale = min(max(1.0 - offset / 200.0, finalFontSize), 1.0)

полный код

  func scrollViewDidScroll(_ scrollView: UIScrollView) {


    let defualtFontSize = 17.0
    let minFontSize = 11.0
    let finalFontSize = CGFloat(minFontSize / defualtFontSize)

    let offset = scrollView.contentOffset.y
    let scale = min(max(1.0 - offset / 200.0, finalFontSize), 1.0)
    myLabel.transform = CGAffineTransform(scaleX: scale, y: scale)
}

но запишите вычисление куда-нибудь из scrollViewDidScroll, избегая использования ЦП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...