【问题标题】:Create a loop on UIScrollView在 UIScrollView 上创建一个循环
【发布时间】:2017-06-02 07:33:14
【问题描述】:

我可以在视图上来回滚动,但我不能循环视图,因此当我在 ViewController3 上时它会向后滚动并在 ViewController1 上向前滚动以创建循环。我该怎么做?

下面的代码是我到目前为止所做的。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()

    let vc0 = ViewController0(nibName: "ViewController0", bundle: nil)

    var frame0 = vc0.view.frame
    frame0.origin.x = self.view.frame.size.width
    vc0.view.frame = frame0

    self.addChildViewController(vc0)
    self.scrollView.addSubview(vc0.view)
    vc0.didMove(toParentViewController: self)

    let vc1 = ViewController1(nibName: "ViewController1", bundle: nil)

    var frame1 = vc1.view.frame
    frame1.origin.x = self.view.frame.size.width
    vc1.view.frame = frame1

    self.addChildViewController(vc1)
    self.scrollView.addSubview(vc1.view)
    vc1.didMove(toParentViewController: self)

    let vc2 = ViewController2(nibName: "ViewController2", bundle: nil)

    var frame2 = vc2.view.frame
    frame2.origin.x = self.view.frame.size.width * 2
    vc2.view.frame = frame2

    self.addChildViewController(vc2)
    self.scrollView.addSubview(vc2.view)
    vc2.didMove(toParentViewController: self)

    let vc3 = ViewController3(nibName: "ViewController3", bundle: nil)

    var frame3 = vc3.view.frame
    frame3.origin.x = self.view.frame.size.width * 3
    vc1.view.frame = frame3

    self.addChildViewController(vc3)
    self.scrollView.addSubview(vc3.view)
    vc3.didMove(toParentViewController: self)

    self.scrollView.contentSize = CGSize(width: Double(self.view.frame.size.width * 4), height: Double(self.view.frame.size.height - 66))

}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

【问题讨论】:

    标签: xcode loops uiscrollview swift3


    【解决方案1】:

    实际上,我建议您完全放弃使用 UIScrollView 并改用 UIPageViewController。它使这种事情变得微不足道,因为您一次只需要提供一个页面,并且进行您描述的那种无限或循环滚动很容易,因为您每次只需在循环系列中继续提供“下一个”视图控制器被要求。另外,它会为您处理整个亲子舞蹈(并不是说您这样做有什么问题)。

    【讨论】:

    • 好的,谢谢。你能否给我更多关于如何使用 UIPageViewController 的详细信息?
    • 这是一个可下载的示例项目:github.com/mattneub/Programming-iOS-Book-Examples/blob/master/… 在您的情况下,不是在第三个 VC 之后返回 nil,您只需返回第一个 VC 和 presto,您正在循环。
    • 谢谢,我去看看。
    • 对不起,我有点困惑,您向我展示的示例项目是 AppDelegate.swift,但我一直在使用 ViewController.swift。我是否只需复制该代码并将其粘贴到我的 ViewController 或 AppDelegate 中?
    • 好吧,你不应该复制代码并粘贴它。我正在展示这个概念是如何工作的。您应该使用代码来帮助您理解页面视图控制器,然后编写您的自己的代码。
    猜你喜欢
    • 1970-01-01
    • 2023-01-20
    • 2016-10-17
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多