2017-06-14 122 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 
} 
相关问题