Swift:ScrollView仅显示添加的最后一个视图

Swift:ScrollView仅显示添加的最后一个视图,swift,uiscrollview,Swift,Uiscrollview,我正在尝试使用scrollView重新创建一个UIPageController,以便在手势识别方面具有更大的灵活性。一切都可以工作,比如分页,但目前,我的scrollView仅将第3页显示为第一页。我错过了什么?有人能帮我吗 let scrollView = UIScrollView() let pageControl = UIPageControl() var pages: [UIView] { get { let page1 = UIView() p

我正在尝试使用scrollView重新创建一个UIPageController,以便在手势识别方面具有更大的灵活性。一切都可以工作,比如分页,但目前,我的scrollView仅将第3页显示为第一页。我错过了什么?有人能帮我吗

let scrollView = UIScrollView()
let pageControl = UIPageControl()

var pages: [UIView] {
    get {
        let page1 = UIView()
        page1.backgroundColor = .systemBlue
        
        let page2 = UIView()
        page1.backgroundColor = .systemPurple
        
        let page3 = UIView()
        page1.backgroundColor = .systemOrange
        return [page1, page2, page3]
    }
}

  override func viewDidLoad() {
    super.viewDidLoad()
    
    view.backgroundColor = .white
 
    view.addSubview(scrollView)
    scrollView.backgroundColor = .systemRed
    scrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor, padding: .init(top: 0, left: 0, bottom: 0, right: 0))
    
    view.addSubview(pageControl)
    //BringSubViewToFront makes sures its always up front
    view.bringSubviewToFront(pageControl)
    pageControl.anchor(top: nil, leading: view.leadingAnchor, bottom: view.safeAreaLayoutGuide.bottomAnchor, trailing: view.trailingAnchor)
    
    setupScrollView(pages: pages)
    pageControl.numberOfPages = pages.count
    pageControl.currentPage = 0 
}

  fileprivate func setupScrollView(pages: [UIView]) {
    scrollView.delegate = self
    scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
    scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(pages.count), height: view.frame.height)
    scrollView.isPagingEnabled = true
    
    //Disables vertical scrolling and horizontal bounces
    scrollView.contentSize.height = 1
    scrollView.bounces = false
    
    for i in 0..<pages.count {
        pages[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
        scrollView.addSubview(pages[i])
    }
}
}

extension ChartViewController: UIScrollViewDelegate {

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let pageIndex = round(scrollView.contentOffset.x / view.frame.width)
    pageControl.currentPage = Int(pageIndex)
}
}
让scrollView=UIScrollView()
让pageControl=UIPageControl()
变量页面:[UIView]{
得到{
让page1=UIView()
page1.backgroundColor=.systemBlue
让page2=UIView()
page1.backgroundColor=.systemPurple
让page3=UIView()
page1.backgroundColor=.systemOrange
返回[第1页,第2页,第3页]
}
}
重写func viewDidLoad(){
super.viewDidLoad()
view.backgroundColor=.white
view.addSubview(滚动视图)
scrollView.backgroundColor=.systemRed
scrollView.anchor(顶部:view.SafeAlayoutGuide.topAnchor,前导:view.leadingAnchor,底部:view.bottomAnchor,尾随:view.trailingAnchor,填充:.init(顶部:0,左侧:0,底部:0,右侧:0))
view.addSubview(页面控件)
//将Subview带到前台确保其始终处于前台
view.bringSubviewToFront(页面控件)
pageControl.anchor(顶部:无,前导:view.leadingAnchor,底部:view.SafeArea LayoutGuide.bottomAnchor,尾部:view.trailingAnchor)
设置滚动视图(页面:页面)
pageControl.numberOfPages=pages.count
pageControl.currentPage=0
}
fileprivate func设置滚动视图(页面:[UIView]){
scrollView.delegate=self
scrollView.frame=CGRect(x:0,y:0,宽度:view.frame.width,高度:view.frame.height)
scrollView.contentSize=CGSize(宽度:view.frame.width*CGFloat(pages.count),高度:view.frame.height)
scrollView.isPaginEnabled=true
//禁用垂直滚动和水平反弹
scrollView.contentSize.height=1
scrollView.bounces=false

对于0..中的i,在设置背景色时,页面变量中存在输入错误

修复:请将第1页替换为第2页和第3页

第2页.backgroundColor=.systemPurple


page3.backgroundColor=.systemOrange

噢,哇!非常感谢!我一直专注于setupScrollView功能,甚至没有注意到这个小错误。