在uiimageView背景图像上访问视差UISCROLLVIEW



我正在尝试开发一个主屏幕,其中卷轴背后有一个UIImageView。我希望滚动视图可以通过图像滚动内容,并以较慢的速度(视差)滚动图像滚动。

我已经使用TableView或ScrollView标头找到了大量解决方案,但这不是我想要的。

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

我在滚动浏览后有配置的uiimage视图,我正在尝试在这里使用该解决方案,但是我似乎在转换为Swift 4时很难。

有什么想法?

开始

滚动

基于我对一个非常相似的问题的回答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
        }
    }
}

最新更新