UIScrollView 禁用顶部反弹

UIScrollView disable top bounce

提问人:rmluux 提问时间:1/29/2020 更新时间:7/16/2022 访问量:1347

问:

我有一个包含 UIScrollView 的 ViewController,我尝试仅在视图顶部禁用反弹效果。

我试图在我的ViewController类中添加这个答案,它说要这样做:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    //disable bounce only at the top of the screen
    scrollView.bounces = scrollView.contentOffset.y > 100
}

但我真的不明白该怎么做。我还尝试实现 UIScrollViewDelegate。

我尝试过的任何东西都没有奏效。

这是我的 StoryBoard 和 ViewController

我需要做些什么才能使它起作用?

我的设置:

  • Swift版本:5.1.3
  • Xcode版本:11.3.1
  • 目标 iOS 版本 : 13.2
  • MacBook Pro(13 英寸,2016 年,四个雷雳 3 端口) MacOS Catalina 10.15.2 (19C57)
iOS Swift iPhone UI 滚动视图

评论

0赞 Manikandan 1/29/2020
您是否在 viewController 中设置了 scrollview.delegate = self ?

答:

4赞 Valentina Konatar 1/29/2020 #1

连接 scrollView 插座,然后尝试添加或添加您的函数。scrollView.delegate = selfscrollView.bounces = scrollView.contentOffset.y > 100viewDidLoad()

评论

0赞 rmluux 1/29/2020
我尝试添加并让我的视图控制器继承UIScrollViewDelegate,但它不起作用scrollView.delegate = self
0赞 rmluux 1/29/2020
添加该功能只需禁用顶部和底部反弹。scrollView.bounces = scrollView.contentOffset.y > 100viewDidLoad()
0赞 Valentina Konatar 1/29/2020
添加 scrollview outlet,就像你所做的那样,并调用它。然后添加,然后检查您的是否被调用。imageViewscrollViewscrollView.delegate = selfviewDidLoad()scrollViewDidScroll()
4赞 Ketan Parmar 1/29/2020 #2

如果你想禁用的反弹,那么你可以把你的出口,并且可以将反弹属性设置为false,如下所示,scrollviewscrollviewviewdidload

yourScrollView.bounces = false

或者您也可以取消选中故事板中的反弹!

评论

0赞 Valentina Konatar 1/29/2020
这不会消除从顶部和底部的反弹吗?他只想去除顶部反弹
0赞 Ketan Parmar 1/29/2020
哦!好。我误解了这个问题!那么@ValentinaKonatar的答案是正确的,只禁用顶部弹跳!
0赞 Chetan Hedamba 1/29/2020 #3

试试这个

func scrollViewDidScroll(scrollView: UIScrollView) {
      if scrollView.contentOffset.y < 0 {
          scrollView.contentOffset.y = 0
      }
  }

评论

0赞 rmluux 1/29/2020
我试过了,但从未调用过该函数。我需要做什么?我通过设置委托尝试了@ValentinaKonatar答案,但没有用。
1赞 Chetan Hedamba 1/29/2020
以 scrollview outlet 为例,像这样添加委托 scrollView.delegate = self
0赞 rmluux 1/29/2020 #4

好的,这是我问题的答案:

  • 在 viewController 中,添加 ScrollView 出口
  • 在函数中,添加以下内容viewDidLoad()myScrollView.delegate = self
  • 使 viewController 实现 UIScrollViewDelegate :class MyViewController: UIViewController, UIScrollViewDelegate { ...
  • 然后添加以下函数:

    函数 scrollViewDidScroll(scrollView: UIScrollView) { myScrollView.bounces = myScrollView.contentOffset.y > 100 }

0赞 Ucdemir 7/16/2022 #5

转到 Attributes Inspector。 取消选中“Bounce On Scrolll”