【发布时间】: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