2017-06-14 129 views
-1

我在ScrollView超級視圖中有一個UIView。我希望這個UIView能夠堅持到頂端,並在用戶滾動時停留在那裏。Swift:如何在滾動時將視圖錨定到頂部

請注意,它應該在屏幕中間開始時分別向上滾動。

enter image description here

我見過很多的問題和答案,但他們沒有解決我的問題

iOS: Add subview with a fix position on screen

Simple way to change the position of UIView?

我在scrollViewDidScroll方法的代碼

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    if scrollView.contentOffset.y > anchor.frame.origin.y { 

     var fixedFrame:CGRect = self.anchor.frame 
     fixedFrame.origin.y = (self.navigationController?.navigationBar.frame.height)! 
     self.anchor.frame = fixedFrame 


    } 

} 
+0

是在它在開始前這一觀點,或者是別的地方,有它上面其他的看法? – Larme

+0

它位於scrollView的中間,受約束約束,也許這是一個問題? – DCDC

+0

不應該,只是如果它已經在頂部,最簡單的方法就不必將它放在滾動視圖中,並從該粘滯視圖開始滾動視圖的框架。 – Larme

回答

-1

爲什麼不把你的視圖放在你的滾動視圖中?即使你將滾動你的滾動視圖,它也會保持在最高位置?

+0

那麼你將如何滾動它呢? – DCDC

0

您可以通過爲您的定位視圖保存initial offset value of Y來完成此操作,然後在scrollview委託事件中對其進行比較。

self.initialOffSet = self.anchor.frame.origin.y 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    var newFrame = self.anchor.frame 

    newFrame.origin.y = max(self.initialOffSet!, scrollView.contentOffset.y) 

    self.anchor.frame = newFrame 
} 
相關問題