[英]How change font size dynamically when scrollView contentOffset y changed?
我有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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.