简体   繁体   English

iOS 如何在滚动视图中为图像 Swift 创建视差效果

[英]iOS How to create parallax effect in scroll view for image Swift

How can I create a parallax effect for my image ?如何为我的图像创建视差效果
I use scroll view.我使用滚动视图。 I found tutorial only for table view.我发现教程仅适用于表格视图。 Is it possible to create such an effect for the image?是否可以为图像创建这样的效果?

UPDATE code :更新代码:

@IBOutlet weak var topConstrain: NSLayoutConstraint!
override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.delegate = self
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y < 0 {
        topConstrain.constant = scrollView.contentOffset.y
    }
    else {
        topConstrain.constant = 0
    }
}

But this isn't working.但这不起作用。

If you want to scroll image with some foregroundScroll ,you have to take two scrollview's 1)ImageScrollview 2)Foregroundscrollview ,add imageview to backgroundscrollview and call scrollViewDidScroll delegate.如果你想用一些 foregroundScroll 滚动图像,你必须采取两个滚动视图的 1)ImageScrollview 2)Foregroundscrollview ,将 imageview 添加到 backgroundscrollview 并调用 scrollViewDidScroll 委托。

   class ParallarXController: UIViewController,UIScrollViewDelegate {
         @IBOutlet weak var imageScrollView: UIScrollView!
         @IBOutlet weak var foregroundScrollView: UIScrollView!

            override func viewDidLoad() {
               super.viewDidLoad()
               let rearImg = UIImageView.init(image: UIImage(named: "readArticalBGimage"))
                    rearImg.frame = CGRect(x: 0, y: 0, width: (self.imageScrollView.frame.width), height: self.view.bounds.height+110)
                    imageScrollView.contentSize  = CGSize.init(width: self.view.bounds.width, height: self.view.bounds.height+100)
                    rearImg.contentMode = .scaleAspectFill
                    imageScrollView.addSubview(rearImg)

                }


     func scrollViewDidScroll(_ scrollView: UIScrollView) {
                    let foregroundScrollviewHeight = foregroundScrollView.contentSize.height - foregroundScrollView.bounds.height
                    let percentageScroll = foregroundScrollView.contentOffset.y / foregroundScrollviewHeight
                    let backgroundScrollViewHeight = imageScrollView.contentSize.height - imageScrollView.bounds.height
                    imageScrollView.contentOffset = CGPoint(x: 0, y: backgroundScrollViewHeight * percentageScroll)
      }
   }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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