scrollView 分页显示不正确

Posted

技术标签:

【中文标题】scrollView 分页显示不正确【英文标题】:Paging by scrollView incorrect displayed 【发布时间】:2018-08-21 13:43:23 【问题描述】:

我不明白为什么 iPhone 4,7 显示正确,但在 iphone 5,5 上显示不正确。我想通过 ScrollView 进行分页。

我应该怎么做才能在所有设备上正确显示?

func showScrollView() 
        var photoSlides = [Slides]()
        for image in photo 
            let slide: Slides = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slides
            slide.slideImage.image = image.image
            photoSlides.append(slide)
        
        setupSlideScrollView(slides: photoSlides)
    

    func setupSlideScrollView(slides : [Slides]) 
        scrollView.contentSize = CGSize(width: scrollView.frame.width * CGFloat(slides.count), height: 200)
        scrollView.isPagingEnabled = true

        for i in 0 ..< slides.count 
            slides[i].frame = CGRect(x: scrollView.frame.width * CGFloat(i), y: 0, width: scrollView.frame.width, height: scrollView.frame.height)
            scrollView.addSubview(slides[i])
        
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) 
        let pageIndex = round(scrollView.contentOffset.x/scrollView.frame.width)
        pageControl.currentPage = Int(pageIndex)
    

https://yadi.sk/i/ipS5WchP3aRtZ9 - 正确(iPhone 8)

https://yadi.sk/i/SPmriRFn3aRtgL - 不正确(iPhone 8 Plus)

【问题讨论】:

【参考方案1】:

如果您使用 storyboard 或 xib 来设计您的 UI,然后对于屏幕的某些部分您希望框架大小来计算其他控件的框架,那么您必须在该控件上使用 layoutIfNeeded 方法。即在您的情况下,您可以执行以下操作

override func viewWillAppear(animated: Bool) 
    super.viewWillAppear(animated) 

    scrollView.layoutIfNeeded()

    // THEN CALL YOUR FUNCTION WHICH SETUP YOUR OTHER VIEWS
    showScrollView()

【讨论】:

以上是关于scrollView 分页显示不正确的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Datatable:分页和过滤器无法正确显示

如何使用不同高度的 UISCrollView 分页?

iOS 开发之使用 ScrollView 实现自定义滚动距离(半屏分页滑动)

分页工具栏不显示自定义搜索结果

可分页在招摇中未正确显示

Ag 网格分页箭头未正确显示