Ios 使用CGAffineTransform将UILabel字体大小减小到精确点
我有一个Ios 使用CGAffineTransform将UILabel字体大小减小到精确点,ios,swift,uiscrollview,cgaffinetransform,Ios,Swift,Uiscrollview,Cgaffinetransform,我有一个UITableView和一个带有自定义标题标签的UINavigationBar。我想在向下滚动时减小标题标签字体大小,在向上滚动时增大它 let defualtFontSize = 17.0 let minFontSize = 11.0 let finalFontSize = CGFloat(minFontSize / defualtFontSize) 这是我的密码 override func viewDidLoad() { super.viewDidLoad() my
UITableView
和一个带有自定义标题标签的UINavigationBar
。我想在向下滚动时减小标题标签字体大小,在向上滚动时增大它
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
这是我的密码
override func viewDidLoad() {
super.viewDidLoad()
myLabel.font = UIFont(name: "Arial", size: 17)
}
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
在这里,我设置了标签的字体大小
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
然后,我像这样变换字体大小
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)
}
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
问题是,通过这种方式将最小点设置为0,但我希望我的标签减少到11点,以此类推
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
有人能帮我编辑代码吗?用这个公式计算最终刻度
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
然后在这里使用finalFontSize
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
let scale = min(max(1.0 - offset / 200.0, finalFontSize), 1.0)
完整代码
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)
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的使用
let defualtFontSize = 17.0
let minFontSize = 11.0
let finalFontSize = CGFloat(minFontSize / defualtFontSize)