2017-12-13 4 views
0

스크롤 뷰에서 페이지 컨트롤로 스크롤 할 수있는 3 개의 차트가 있는데이를 설정하는 가장 좋은 방법은 무엇인지 궁금합니다. 제가 본 튜토리얼의 대부분은 프로그래밍 방식으로 뷰를 설정했지만 차트를 사용하기 위해서는 이미 스토리 보드에 UIViews을 작성해야 했으므로 scrollView을 설정하는 가장 좋은 방법은 차트가 각각 별도의 페이지? 코드의Storyboard에서 PageControl이있는 ScrollView

enter image description here

관련 라인은 다음과 같습니다. 차트가 포함 된 UIView를 다른 위치로 드래그해야합니까? 아니면 스토리 보드에서 할 수 없습니까?

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) { 

    } 


} 

답변

0

xib에서보기를 만들고 스크롤 방식으로 프로그래밍 방식으로 추가 할 수 있습니다.

예 :

당신은 세 가지보기가 있습니다.

뷰 1

뷰 2

뷰 2

당신은있는 ScrollView에 추가 할 수 있습니다 :

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!) 
}