我有 UIScrollView
和 UILabel
。当用户向上/向下滚动我的 UIScrollView
时,我想动态地将 UILabel
大小从 33.0 更改为 0.0,从 0.0 到 33。
我该怎么做?
@IBOutlet weak var myLabel : UILabel!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y
let fontpointmath = (myLabel.font.pointSize / (offset / 100) - 15)
if offset > 0 {
if fontpointmath < 0 {
myLabel.font = UIFont(name: "Arial", size: 0.0)
}else if fontpointmath > 33 {
myLabel.font = UIFont(name: "Arial", size: 33.0)
}else{
myLabel.font = UIFont(name: "Arial", size: CGFloat(fontpointmath))
}
}
我当前的代码只允许字体大小为 15 点左右并且不会更改为 0。当用户再次向下滚动时它也不会增加到 33。
最佳答案
请尝试使用转换而不是改变字体大小
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
myLabel.font = UIFont(name: "Arial", size: 33.0)
}
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)
}
关于ios - scrollView contentOffset y 更改时如何动态更改字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186530/