繁体   English   中英

当scrollView contentOffset y更改时,如何动态更改字体大小?

[英]How change font size dynamically when scrollView contentOffset y changed?

我有UIScrollViewUILabel 我想在用户向上/向下滚动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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM