【发布时间】:2017-07-30 22:59:48
【问题描述】:
我想让用户向左或向右滚动,但只能滚动一屏。
//
// MainViewController.swift
// Calendar
//
// Created by Andy on 7/22/17.
// Copyright © 2017 Andy. All rights reserved.
//
import UIKit
class MainViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var ScrollView: UIScrollView!{
didSet{
ScrollView.delegate = self
ScrollView.contentSize = CGSize(width: ScrollView.frame.width * 3, height: ScrollView.frame.height)
}
}
@IBOutlet weak var center: UIView!
@IBOutlet weak var left: UIView!
@IBOutlet weak var right: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destination = segue.destination as? ReusableViewController {
if let identifier = segue.identifier{
destination.currentYearOffSet = 0
destination.currentMonthOffSet = 0
switch identifier {
case "center":
destination.position = .center
case "left":
destination.position = .left
case "right":
destination.position = .right
default:
fatalError("Unexpected Segue Identifier")
}
}
}
}
}
这个控制器只做滚动工作。在滚动视图内部,有三个由其他控制器管理的容器视图。但这根本行不通。
我做了以下解决问题但徒劳无功: 1.检查scrollView的内容大小。 2. 连接控制器和三个containerViews。 3.设置了scrollView委托,但是我没有实现任何方法。(可能是这个原因但我不知道要实现什么)
另外,当控制器对它们不做任何事情时,我是否需要连接这三个 containerView?
编辑:我删除了:1. contentSize 2. UIScrollViewDelegate 3. 三个 containerViews 的出口。这确实使我的代码更好看,但 scrollView 仍然无法滚动。
EDIT2:我添加了一个视图,该视图的大小正是我希望 scrollView.contentSize 作为 scrollView 的直接子视图的大小。而且似乎解决了内容高度,因为它只是说内容宽度不明确。它想向我添加的视图添加前导和尾随约束,但我希望它在滚动视图中水平居中。现在我需要设置前导和尾随约束,让 autoLayout 知道 contentWidth。如何根据父视图的宽度设置前导和尾随偏移量,或者我应该做其他事情来解决这个问题?
【问题讨论】:
标签: ios swift uiscrollview