【问题标题】:ScrollView with PageControl in Storyboard故事板中带有 PageControl 的 ScrollView
【发布时间】:2018-05-27 01:26:36
【问题描述】:

我有三个图表,我希望能够在滚动视图中使用页面控件滚动浏览,我想知道设置它的最佳方法是什么。我见过的大多数教程都以编程方式设置了视图,但是为了使用图表,我必须已经在情节提要中创建 UIViews,所以我想知道设置 scrollView 的最佳方法是让图表每个都在一个单独的页面上?

相关代码行如下。我是否需要将包含图表的 UIViews 拖到其他地方?还是不能在storyboard上做?

import UIKit
import Charts

class ChartsViewController: UIViewController {

    // MARK: Types

    enum TimePeriod: Int {
        case day = 0
        case week = 1
        case month = 2
        case year = 3
    }

    // MARK: Properties

    var period: TimePeriod = .day {
        didSet {
            print(self.period)
        }
    }

    @IBOutlet weak var pageControl: UIPageControl!
    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var pieChart: PieChartView!
    @IBOutlet weak var segmentedControl: UISegmentedControl!
    @IBOutlet weak var barChart: BarChartView!
    @IBOutlet weak var lineChart: LineChartView!

    func lineChartUpdate() {
        var lineChartEntry = [ChartDataEntry]()
        for i in 0 ..< 15 {
            let value = ChartDataEntry(x: Double(i), y: Double(i))
            lineChartEntry.append(value)
        }
        let line1 = LineChartDataSet(values: lineChartEntry, label: "Category 1")
        let data = LineChartData(dataSets: [line1])
        lineChart.data = data
        lineChart.chartDescription?.text = "Line Chart"

        lineChart.notifyDataSetChanged()
    }

    func configurePageControl() {
        self.pageControl.numberOfPages = 3
        self.pageControl.currentPage = 0
    }

    @IBAction func renderCharts(_ sender: UISlider) {
        pieChartUpdate()
        barChartUpdate()
    }

    @IBAction func segmentedControlSelectedIndexDidChange(_ sender: UISegmentedControl) {
        self.period = TimePeriod(rawValue: sender.selectedSegmentIndex)!
    }

    // MARK: UIViewController

    override func viewDidLoad() {
        super.viewDidLoad()
        configurePageControl()
        pieChartUpdate()
        barChartUpdate()
        lineChartUpdate()
        scrollView.addSubview(pieChart)
        scrollView.addSubview(barChart)
        scrollView.addSubview(lineChart)
    }

    @IBAction func pageChange(_ sender: UIPageControl) {

    }


}

【问题讨论】:

    标签: ios swift uiscrollview uipagecontrol


    【解决方案1】:

    您可以在 xib 中创建视图,然后以编程方式在滚动视图中添加。

    示例:

    你有三个视图。

    查看1

    视图2

    视图2

    您可以将它们添加到滚动视图中:

    override func viewDidLoad() {
        super.viewDidLoad() 
        view1 = View1(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 100))
        scrollView.addSubview(view1!)
        view2 = View2(frame: CGRect(x: UIScreen.main.bounds.width, y: 0, width: UIScreen.main.bounds.width, height: 522))
        scrollView.addSubview(view2!)
        view3 = View3(frame: CGRect(x: UIScreen.main.bounds.width*2, y: 0, width: UIScreen.main.bounds.width, height: height))
        scrollView.addSubview(view3!)
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多