菜鸟教程小白 发表于 2022-12-13 10:19:22

ios - 仅以编程方式滚动 UIPageViewController 一点点


                                            <p><p>我有一个带有 3 个屏幕的 UIPageViewController。我想在用户第一次打开应用程序时以编程方式向右滚动一点,以表明他能够左右滚动,并显示下一个屏幕的一部分。这可能吗? </p>

<p>我真正想做的是在第一次加载应用程序时实现“反弹”效果,但首先我需要知道是否可以滚动页面 ViewController 。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这实际上是可能的。</p>

<p>首先,您需要访问 <code>UIPageViewController</code>ScrollView 。在您的页面 ViewController 子类中:</p>

<pre><code>var scrollView: UIScrollView?

override func viewDidLoad() {
    super.viewDidLoad()

    self.setupScrollView()
}

private func setupScrollView() {
    for view in self.view.subviews{
      if let scrollView = view as? UIScrollView {
            self.scrollView = scrollView
            self.scrollView?.delegate = self // if needed
      }
    }
}
</code></pre>

<p>当您准备好显示滚动提示时,调整 ScrollView 的内容偏移量。请记住,您的初始滚动偏移量可能不为零。即使你在第一页,也有前页和后页的概念。就我而言,我的初始偏移量是屏幕的宽度。这是一个滚动提示示例:</p>

<pre><code>self.view.userInteractionEnabled = false         

UIView.animateWithDuration(0.3,
    animations: { () -&gt; Void in

      if let pvc = self.pageViewController as? HomePageViewController {
            if let currentXOffset: CGFloat = pvc.scrollView?.contentOffset.x {
                pvc.scrollView?.setContentOffset(CGPointMake(currentXOffset + 40, 0), animated: false)
            }
      }
}, completion: { (finished) in

    UIView.animateWithDuration(0.5,
      delay: 0.3,
      usingSpringWithDamping: 0.3,
      initialSpringVelocity: 0.6,
      options: .allZeros,
      animations: { () -&gt; Void in

            if let pvc = self.pageViewController as? HomePageViewController {
                if let currentXOffset: CGFloat = pvc.scrollView?.contentOffset.x {
                  pvc.scrollView?.setContentOffset(CGPointMake(currentXOffset - 40, 0), animated: false)
                }
            }
   }, completion: { (finished) -&gt; Void in
         self.view.userInteractionEnabled = true
   })
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 仅以编程方式滚动 UIPageViewController 一点点,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28662446/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28662446/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 仅以编程方式滚动 UIPageViewController 一点点