我创建了两个uiscrollviews(一个名为scrollview和一个名为scrolllevel4(
当我移动scrolllevel4时,我可以使用scrollview以相同的速度使用: -
func scrollViewDidScroll(_ scrollLevel4: UIScrollView) {
scrollView.contentOffset.x = scrollLevel4.contentOffset.x
}
但是,如果我想以不同的速度移动scrollview,则不确定该怎么办
scrollView.contentOffset.x = scrollLevel4.contentOffset.x
它崩溃了,甚至简单 10,相同的速度,交错的偏移,仍然崩溃
还尝试了.scrollecttovisible((方法
想法?
而无需看到错误或代码,很难确定,但是您很可能是为两个 scrollviews设置相同的代表。当您拖动scrollLevel4
时,它会触发scrollView
上的滚动,因此您将获得无限循环并最终崩溃。
如果您想在两个scrollviews上使用相同的委托,则需要在操作之前检查哪一个。这是一个基本的工作实现。打开一个新的单个视图项目,并在ViewController中替换代码。swift中的代码:
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
var imageView1: UIImageView!
var imageView2: UIImageView!
var scrollView1: UIScrollView!
var scrollView2: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
imageView1 = UIImageView(image: UIImage(named: "image.jpg"))
imageView2 = UIImageView(image: UIImage(named: "image.jpg"))
scrollView1 = UIScrollView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 200, height: 200)))
scrollView1.contentSize = imageView1.bounds.size
scrollView1.addSubview(imageView1)
view.addSubview(scrollView1)
scrollView2 = UIScrollView(frame: CGRect(origin: CGPoint(x: 0, y: 210), size: CGSize(width: 200, height: 200)))
scrollView2.contentSize = imageView2.bounds.size
scrollView2.addSubview(imageView2)
view.addSubview(scrollView2)
scrollView2.delegate = self
scrollView1.delegate = self
}
func scrollViewDidScroll(_ scrolled: UIScrollView) {
// both scrollViews call this when scrolled, so determine which was scrolled before adjusting
if scrolled === scrollView1 {
scrollView2.contentOffset.x = scrolled.contentOffset.x + 100
} else if scrolled === scrollView2 {
scrollView1.contentOffset.x = scrolled.contentOffset.x - 100
}
}
}
请注意,无论您适用于一个偏移量的任何修改,都必须将确切的逆(或根本没有(应用于另一个。否则,您将有一个无限的来回滚动在崩溃中结束的环路。