我有一个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点,依此类推。
有人可以帮我编辑我的代码吗?
答案 0 :(得分:0)
使用此公式计算最终比例
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之外的某个地方,避免使用CPU。