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 分页显示不正确的主要内容,如果未能解决你的问题,请参考以下文章