【问题标题】:Parallax UIScrollview over UIImageView background imageUIImageView 背景图像上的视差 UIScrollview
【发布时间】:2025-12-17 12:55:01
【问题描述】:

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

我找到了大量使用表格视图或滚动视图标题的解决方案,但这不是我想要的。

我试图在 United Airlines 移动应用程序中模仿类似的行为,但我似乎无法正确获取代码。

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

有什么想法吗?

Start

Scroll

【问题讨论】:

    标签: swift background uiimageview parallax


    【解决方案1】:

    基于我对一个非常相似的问题https://*.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
            }
        }
    }
    

    【讨论】: