要实现 ScrollView 水平自动匀速无限移动,可以通过使用两个 ScrollView 来实现无缝衔接。下面是一个使用纯代码方式实现的示例:\n\n首先,在 ViewController 的视图加载完成后,创建两个 ScrollView 并设置它们的属性,例如 frame、contentSize、contentOffset 等。还需要设置 ViewController 作为 ScrollView 的代理。\n\nswift\nclass ViewController: UIViewController, UIScrollViewDelegate {\n var scrollView1: UIScrollView!\n var scrollView2: UIScrollView!\n \n override func viewDidLoad() {\n super.viewDidLoad()\n \n // 创建 ScrollView1\n scrollView1 = UIScrollView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height))\n scrollView1.contentSize = CGSize(width: view.frame.width * 2, height: view.frame.height)\n scrollView1.contentOffset = CGPoint(x: view.frame.width, y: 0)\n scrollView1.isPagingEnabled = true\n scrollView1.delegate = self\n view.addSubview(scrollView1)\n \n // 创建 ScrollView2\n scrollView2 = UIScrollView(frame: CGRect(x: view.frame.width, y: 0, width: view.frame.width, height: view.frame.height))\n scrollView2.contentSize = CGSize(width: view.frame.width * 2, height: view.frame.height)\n scrollView2.contentOffset = CGPoint(x: 0, y: 0)\n scrollView2.isPagingEnabled = true\n scrollView2.delegate = self\n view.addSubview(scrollView2)\n }\n \n // ScrollView 滚动时的回调方法\n func scrollViewDidScroll(_ scrollView: UIScrollView) {\n let scrollView1OffsetX = scrollView1.contentOffset.x\n let scrollView2OffsetX = scrollView2.contentOffset.x\n \n // 当 ScrollView1 滚动到第一页时,将 ScrollView2 设置到最后一页\n if scrollView1OffsetX <= 0 {\n scrollView2.contentOffset = CGPoint(x: view.frame.width, y: 0)\n }\n \n // 当 ScrollView2 滚动到最后一页时,将 ScrollView1 设置到第一页\n if scrollView2OffsetX >= view.frame.width * 2 {\n scrollView1.contentOffset = CGPoint(x: view.frame.width, y: 0)\n }\n }\n}\n\n\n在上述代码中,我们创建了两个 ScrollView,ScrollView1 和 ScrollView2,并设置它们的 frame、contentSize、contentOffset 等属性。在 ScrollView 滚动时,通过代理方法 scrollViewDidScroll 来判断 ScrollView1 和 ScrollView2 的 contentOffset,并在需要时进行调整,以实现无缝衔接的效果。\n\n希望能帮助到你!

Swift: 实现水平自动匀速无限移动的 ScrollView (使用两个 ScrollView 无缝衔接)

原文地址: https://www.cveoy.top/t/topic/qz3K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录