简体   繁体   English

水平scrollView不滚动

[英]Horizontal scrollView does not scroll

I've followed a tutorial on the internet explaining how to make a scrollview with paging. 我在互联网上关注了一个教程,该教程解释了如何使用分页进行滚动视图。

When I only want to show 1 image it works. 当我只想显示1张图像时,它可以工作。 But I need 3 labels and an Image. 但是我需要3个标签和一个图像。 I've put everything on my storyboard. 我把所有东西都放在了故事板上。 But when running on device/ simulator I can't scroll. 但是在设备/模拟器上运行时,我无法滚动。

//Scrollview
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var pageControl: UIPageControl!
var pageImages: [UIImage] = []
var pageViews: [UIImageView?] = []

@IBOutlet weak var blogImage: UIImageView!
@IBOutlet weak var blogTussenTitel: UILabel!
@IBOutlet weak var blogTitel: UILabel!
@IBOutlet weak var blogbeschrijving: UILabel!


var items: [String] = ["We", "Heart", "Swift"]

override func viewDidLoad() {
    super.viewDidLoad()
    self.sideMenuController()?.sideMenu?.delegate = self;
   if isMenuOpen() == true { disableObjects() } else { enableObjects() }

        // SrollView
    // 1
    pageImages = [UIImage(named: "photo1.png")!,
        UIImage(named: "photo2.png")!,
        UIImage(named: "photo3.png")!,
        UIImage(named: "photo4.png")!,
        UIImage(named: "photo5.png")!]

    let pageCount = pageImages.count

    // 2
    pageControl.currentPage = 0
    pageControl.numberOfPages = pageCount

    // 3
    for _ in 0..<pageCount {
        pageViews.append(nil)
    }

    // 4
    let pagesScrollViewSize = scrollView.frame.size
    scrollView.contentSize = CGSize(width: pagesScrollViewSize.width * CGFloat(pageImages.count),
        height: pagesScrollViewSize.height)

    // 5
    loadVisiblePages()

}

func loadVisiblePages() {
    // First, determine which page is currently visible
    let pageWidth = scrollView.frame.size.width
    let page = Int(floor((scrollView.contentOffset.x * 2.0 + pageWidth) / (pageWidth * 2.0)))
    // Update the page control
    pageControl.currentPage = page
    // Work out which pages you want to load
    let firstPage = page - 1
    let lastPage = page + 1
    // Purge anything before the first page
    for var index = 0; index < firstPage; ++index {
        purgePage(index)
    }
    // Load pages in our range
    for index in firstPage...lastPage {
        loadPage(index)
    }
    // Purge anything after the last page
    for var index = lastPage+1; index < pageImages.count; ++index {
        purgePage(index)
    }
}

func loadPage(page: Int) {
    if page < 0 || page >= pageImages.count {
        // If it's outside the range of what you have to display, then do nothing
        return
    }
    // 1
    if let pageView = pageViews[page] {
        // Do nothing. The view is already loaded.
    } else {
        // 2
        var frame = scrollView.bounds
        frame.origin.x = frame.size.width * CGFloat(page)
        frame.origin.y = 0.0
        // 3
        let newPageView = UIImageView(image: pageImages[page])
        newPageView.contentMode = .ScaleAspectFit
        newPageView.frame = frame
        scrollView.addSubview(newPageView)
        //Image inladen
        //self.blogImage.image = pageImages[page]
        // 4
        pageViews[page] = newPageView
    }
}

func purgePage(page: Int) {
    if page < 0 || page >= pageImages.count {
        // If it's outside the range of what you have to display, then do nothing
        return
    }
    // Remove a page from the scroll view and reset the container array
    if let pageView = pageViews[page] {
        pageView.removeFromSuperview()
        pageViews[page] = nil
    }
}


func scrollViewDidScroll(scrollView: UIScrollView) {
    loadVisiblePages()
}

Someone who can solve the problem? 谁能解决这个问题? Thanks in advance! 提前致谢! Kind regards, Hannes 亲切的问候,汉尼斯

Make sure you UIScrollView height not more than View height itself. 确保UIScrollView height不超过View height本身的View height

UIScrollView setting UIScrollView设置

在此处输入图片说明

View setting 查看设定

在此处输入图片说明

ViewController.swift ViewController.swift

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var scroller: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.


        scroller.contentSize = CGSizeMake(400, 2300)
        scroller.showsHorizontalScrollIndicator = true
        scroller.scrollEnabled = true

    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM