2015-11-02 36 views
2

滾動時,我如何簡單地縮放imageViewautolayoutImageView向下滾動時縮放

嘗試看到視差效果,但不完全是我想要的。

我只想用一個scrollView和頭ImageView誰可以調整大小取決於scrollView位置。

+0

你能重新表達你的問題嗎?目前還不清楚你在做什麼以及你想達到什麼。 – frp

回答

17

步驟通過步驟:

1 - 開放故事板並與這些約束添加在頂部的圖像視圖(選擇您長寬比):

enter image description here

2 - 選擇aspectFill模式和clipSubviews爲你的uiimage

3 - 在裏面有一個子視圖的viewController的頂部添加一個UIScrollView。有關scrollView的自動佈局的所有細節:http://natashatherobot.com/ios-autolayout-scrollview/

4 - 然後在您的代碼中使您的imageView和scrollView的插座引用。

5 - 在viewDidLoad中,插入 self.automaticallyAdjustsScrollViewInsets =假,並設置contentInsets和滾動視圖的contentOffset:

class ViewController: UIViewController { 

    @IBOutlet weak var scrollView: UIScrollView! 
    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.automaticallyAdjustsScrollViewInsets = false 
    } 

    override func viewDidLayoutSubviews() { 
     super.viewDidLayoutSubviews() 

     let imageHeight = imageView.frame.height 

     let newOrigin = CGPoint(x: 0, y: -imageHeight) 

     scrollView.contentOffset = newOrigin 
     scrollView.contentInset = UIEdgeInsets(top: imageHeight, left: 0, bottom: 0, right: 0) 
    } 

} 

6 - 添加scrollviewDelegate到ViewController和scrollViewDidScroll方法來獲取滾動視圖

的位置
class ViewController: UIViewController, UIScrollViewDelegate 

override func viewDidLoad() { 
     super.viewDidLoad() 

     scrollView.delegate = self 
     self.automaticallyAdjustsScrollViewInsets = false 
} 

func scrollViewDidScroll(scrollView: UIScrollView) { 

    let offsetY = scrollView.contentOffset.y 

    if offsetY < 0 
    { 
     imageView.frame.size.height = -offsetY 
    } 
    else 
    { 
     imageView.frame.size.height = imageView.frame.height 
    } 
} 

7 - 然後建立並運行。

你可以在github下載例如: https://github.com/raphrel/scalingImageWhenScrollDown

有可能是更好的解決方案,但是這一個工程。 享受