実装したいこと
iOS chartsを使って円グラフを複数個作り,これをscrollViewを使ってスライドさせようとしています
以下のコードのようにして書いてみたのですが、
webに多く上がっている作り方の例ではscrollViewが画面の横幅いっぱいになっているためこのコードで問題ないと思うのですが、今回私は画面の一部分のみをスクロールさせたいため、このままだと円グラフが他のラベルなどに重なってしまいます。そのため画面の横幅より狭いscrollViewで横スライドを行えばいいかがわかりません。無地のラベルを重ねることによって今は対処しているのですが、この機会に何か方法があったら知りたいと思い質問させていただきます
よろしくお願いします
swift
1class DetailClassViewController: UIViewController, UIScrollViewDelegate { 2 3 4 5 @IBOutlet weak var scrollView: UIScrollView! 6 7 8 9 10// 円グラフ 11 let gradeChartsView = PieChartView() 12 let levelChartsView = PieChartView() 13 let evaChartsView = PieChartView() 14 15 16 var dayNum = 0 17 var periodNum = 0 18 19 // Realm 20 21 let realm = try! Realm() 22 var task: Task! 23 var taskArray = try! Realm().objects(Task.self) 24 25 // どこから遷移したか 0 = Home 1 = ClassList 26 var checkSegue = 0 27 28 29 var postData: PostData! 30 var documentID = "" 31 32 override func viewDidLoad() { 33 super.viewDidLoad() 34 35 36 37 // Do any additional setup after loading the view. 38 backgroundLabel.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 0.6) 39 backgroundLabel.layer.cornerRadius = 10.0 40 backgroundLabel.clipsToBounds = true 41 42 scrollView.delegate = self 43 scrollView.showsHorizontalScrollIndicator = false 44 self.view.addSubview(scrollView) 45 46 47 48 49 self.gradeChartsView.centerText = "評定" 50 51 // グラフに表示するデータのタイトルと値 52 let dataEntries = [ 53 PieChartDataEntry(value: 40, label: "A"), 54 PieChartDataEntry(value: 35, label: "B"), 55 PieChartDataEntry(value: 25, label: "C") 56 ] 57 58 let dataSet = PieChartDataSet(entries: dataEntries, label: "") 59 60 61 // グラフの色 62 dataSet.colors = ChartColorTemplates.liberty() 63 // グラフのデータの値の色 64 dataSet.valueTextColor = UIColor.black 65 // グラフのデータのタイトルの色 66 dataSet.entryLabelColor = UIColor.black 67 68 self.gradeChartsView.data = PieChartData(dataSet: dataSet) 69 self.levelChartsView.data = PieChartData(dataSet: dataSet) 70 self.evaChartsView.data = PieChartData(dataSet: dataSet) 71 72 // データを%表示にする 73 let formatter = NumberFormatter() 74 formatter.numberStyle = .percent 75 formatter.maximumFractionDigits = 2 76 formatter.multiplier = 1.0 77 self.gradeChartsView.data?.setValueFormatter(DefaultValueFormatter(formatter: formatter)) 78 self.gradeChartsView.usePercentValuesEnabled = true 79 self.gradeChartsView.legend.enabled = false 80 81 gradeChartsView.frame = CGRect(x:0, y:0, width: scrollView.frame.size.width/3, height: scrollView.frame.size.height) 82 83 self.levelChartsView.usePercentValuesEnabled = true 84 self.levelChartsView.legend.enabled = false 85 86 self.evaChartsView.data?.setValueFormatter(DefaultValueFormatter(formatter: formatter)) 87 self.evaChartsView.usePercentValuesEnabled = true 88 self.evaChartsView.legend.enabled = false 89 90 evaChartsView.frame = CGRect(x:self.scrollView.frame.size.width/3 * 2, y:0, width: scrollView.frame.size.width/3, height: scrollView.frame.size.height) 91 92 levelChartsView.frame = CGRect(x:self.scrollView.frame.size.width/3, y:0, width: scrollView.frame.size.width/3, height: scrollView.frame.size.height) 93 self.scrollView.addSubview(gradeChartsView) 94 self.scrollView.addSubview(levelChartsView) 95 self.scrollView.addSubview(evaChartsView) 96 97 } 98 99
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。