ios - scrollView contentOffset y 更改时如何动态更改字体大小?

标签 ios swift uiscrollview swift3

我有 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)
}  

关于ios - scrollView contentOffset y 更改时如何动态更改字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186530/

相关文章:

ios - Xamarin:UICollection 图像重新排序问题

ios - Swift UIScrollView 在没有 pagingEnabled 的情况下捕捉到 subview 宽度

ios - 以编程方式创建 ViewController+CollectionView 并将其添加到 ScrollView

ios - RefreshControl 仅出现在水平 ScrollView (iOS)中的第一个子项之上

ios - 在 swift 2 : cannot trigger calloutAccessoryControlTapped for clicks on map annotation

ios - 背景图像垂直拉伸(stretch),但水平重复

objective-c - 在 iOS 中发送音频文件和 JSON 字符串

c++ - 从 C++ 到 Swift 的 CoreAudio 东西

iphone - 像 safari 一样在键盘上添加一个 .com 按钮

ios - 在日期后显示两种不同类型的单元格