[英]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.