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

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

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

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

Q&A

解決済

1回答

723閲覧

Scrollviewの中のViewがずれる

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2022/12/09 05:32

編集2022/12/09 07:45

前提

ScrollViewの中にChartsを配置したのですがChartsを描画(addSubView)すると位置がずれます。
(オートレイアウトが無視される)

実現したいこと

ScrollViewの中にChartsを配置で配置したい。
(一番上から160のConstraint、真ん中に配置)

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード

Swift

1import UIKit 2import Charts 3 4class Test02ViewController: UIViewController { 5 6 @IBOutlet weak var pieChartsView: PieChartView! 7 @IBOutlet weak var scrollContent: UIView! // 追加 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 // 円グラフの中心に表示するタイトル 12 self.pieChartsView.centerText = "テストデータ" 13 14 // グラフに表示するデータのタイトルと値 15 let dataEntries = [ 16 PieChartDataEntry(value: 40, label: "A"), 17 PieChartDataEntry(value: 35, label: "B"), 18 PieChartDataEntry(value: 25, label: "C") 19 ] 20 21 let dataSet = PieChartDataSet(entries: dataEntries, label: "テストデータ") 22 23 // グラフの色 24 dataSet.colors = ChartColorTemplates.vordiplom() 25 // グラフのデータの値の色 26 dataSet.valueTextColor = UIColor.black 27 // グラフのデータのタイトルの色 28 dataSet.entryLabelColor = UIColor.black 29 30 self.pieChartsView.data = PieChartData(dataSet: dataSet) 31 32 // データを%表示にする 33 let formatter = NumberFormatter() 34 formatter.numberStyle = .percent 35 formatter.maximumFractionDigits = 2 36 formatter.multiplier = 1.0 37 self.pieChartsView.data?.setValueFormatter(DefaultValueFormatter(formatter: formatter)) 38 self.pieChartsView.usePercentValuesEnabled = true 39 40 view.addSubview(self.pieChartsView) 41 } 42 43 override func viewWillAppear(_ animated: Bool) { 44 super.viewWillAppear(animated) 45 self.pieChartsView.layoutIfNeeded() 46 } 47} 48

View hierarchy

イメージ説明

イメージ説明

View Constraint

イメージ説明

イメージ説明

イメージ説明

試したこと

✅Chartsの描画はhttps://www.hfoasi8fje3.work/entry/2019/03/04/213142 を忠実に再現しています。
✅スクロールビューの配置は https://ios-docs.dev/uiscrollview/ を忠実に再現しています。
https://qiita.com/touta/items/e72940f8fe8e9967e9f4 の内容をもとにviewWillAppear内でself.view.layoutIfNeeded()呼び出すも治らず。
https://u2k772.blog.fc2.com/blog-entry-172.html の内容をもとに全方向にConstrainsを指定するも治らず。
https://stackoverflow.com/questions/31428483/swift-ios-set-scrollview-constraint-below-navigation-bar-programmaticallyの内容をもとに"Under top bars"のチェックマークを外すも治らず。
https://mzgk.github.io/blog/2014/uiscrollview-checkpoint-2/ も内容をもとに Adjubst Scroll View Insetsのチェックを外すも治らず。

その他

Viewのデバッグの知見が全然ないのでどこを見れば良いのかわかっていない状態です。
お手柔らかにお願いします

補足情報(FW/ツールのバージョンなど)

Xcode13

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

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

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

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

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

hoshi-takanori

2022/12/09 07:34 編集

https://ios-docs.dev/uiscrollview/ の STEP 4 で追加した view を @IBOutlet 接続する必要があります。その際、view という変数名だと画面全体の view とぶつかるので、scrollContent とかの名前にすると良いかと。
退会済みユーザー

退会済みユーザー

2022/12/09 07:51 編集

scrollContentという名前で@IBOutlet 接続しました。 状況は変わりません、、
hoshi-takanori

2022/12/09 07:56

あ、ごめんなさい。勘違いしてました。 pieChartsView はコードで生成してるんじゃなくて、storyboard 上で生成・配置してるんですね。なら view.addSubview(self.pieChartsView) はいらないはず。
退会済みユーザー

退会済みユーザー

2022/12/09 08:37

ありがとうございます。 // view.addSubview(self.pieChartsView) で無事直りました。
guest

回答1

0

ベストアンサー

hoshi-takanoriさんの回答で解決しました。
ありがとうございます。

Swift

1// view.addSubview(self.pieChartsView) // 不要

投稿2022/12/09 08:38

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問