在UIImageView背景图像上的视差UIScrollview

问题描述 投票:0回答:1

我正在尝试开发一个主屏幕,其中Scrollview后面有一个UIImageView。我希望滚动视图在图像上滚动内容,并使图像以较慢的速度向上滚动(视差)。

我发现了大量使用tableview或scrollview标头的解决方案,但这不是我想要的。

我试图模仿联合航空移动应用程序中的类似行为,但我似乎无法正确使用代码。

我在滚动视图后面配置了UIImage视图,我正在尝试使用解决方案here,但我似乎无法转换为Swift 4。

有任何想法吗?

Start

Scroll

swift background uiimageview parallax
1个回答
0
投票

基于我对一个非常相似的问题https://stackoverflow.com/a/46727061/1433612的回答

假设您的imageView是scrollView中的子视图,请使用UIScrollViewDelegate方法scrollViewDidScroll来获取内容偏移量。您可以使用该内容偏移量将imageView转换为所需的“效果”量。

extension ViewController: UIScrollViewDelegate {
    public func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offset = scrollView.contentOffset
        if offset.y > 0.0 {
            let parallaxFactor: CGFloat = 0.8
            let prallaxedOffset = offset.y * parallaxFactor
            let transform = CATransform3DTranslate(CATransform3DIdentity, 0, prallaxedOffset, 0)
            imageView.layer.transform = transform
        } else {
            imageView.layer.transform = CATransform3DIdentity
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.