質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1425閲覧

scrollViewで画面の一部のみをスクロールさせる

tsuji71

総合スコア17

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/08/04 07:36

実装したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

swift

1scrollView.contentSize = CGSize(width: scrollView.frame.size.width * 3, height: scrollView.frame.size.height)

こちらのコードを追加しコンテンツサイズを指定すれば問題なくできました

投稿2020/08/05 00:52

tsuji71

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

swift

1scrollView.contentSize = CGSize(width: scrollView.frame.size.width * 3, height: scrollView.frame.size.height)

こちらのコードの書き忘れでした
コンテンツサイズを指定してあげれば問題なくできます

投稿2020/08/05 00:51

tsuji71

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問