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

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

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

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

Q&A

解決済

1回答

832閲覧

Swift scrollViewに配置したラベルの配置位置を指定したい

ataru2222

総合スコア272

Swift

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

0グッド

0クリップ

投稿2022/06/19 14:25

実現したいこと

Swift scrollViewに配置したラベルの配置位置を指定したい

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

スクロールビューの中の
タイトルラベルTitleLabelと
項目用のラベルLabel1があるのですが、

タイトルラベルの下に項目ラベルを設置したいのですが、
下記のコードではなぜか項目用のラベルのY軸の開始位置の値を何に設定しても0始まりとなってしまいます。

ピンクの位置にタイトルラベルが隠れており
この下に項目ラベルを設置したいです。

イメージ説明

該当のソースコード

Swift

1import Foundation 2import UIKit 3 4class ViewController: UIViewController{ 5 6 let menuView = UIView() 7 let scrollView = UIScrollView() 8 let view1 = UIView() 9 let labelTitle = UILabel() 10 let label1 = UILabel() 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15 scrollViewAdd() 16 viewAdd() 17 labelAdd() 18 19 20 } 21 22 23 ///---------------------------------------------------------------------- 24 /// レイアウト 25 ///---------------------------------------------------------------------- 26 27 28 //ScrollViewを追加する 29 func scrollViewAdd() { 30 scrollView.frame = CGRect(x: 0 31 , y: 0 32 , width: self.view.bounds.size.width * 1.0 33 , height: self.view.bounds.size.height * 0.75) 34 scrollView.backgroundColor = UIColor.purple 35 view.addSubview(scrollView) 36 } 37 38 //Viewを追加する 39 func viewAdd() { 40 41 menuView.frame = CGRect(x: 0 42 , y: 0 43 , width: self.view.bounds.size.width * 1.0 44 , height: self.view.bounds.size.height * 2.0) 45 menuView.backgroundColor = UIColor.white 46 scrollView.addSubview(menuView) 47 scrollView.contentSize = menuView.frame.size 48 49 //タイトル用view 50 view1.frame = CGRect(x: 0 51 , y: 0 52 , width: self.view.bounds.size.width * 1.0 53 , height: self.view.bounds.size.height * 0.05) 54 view1.backgroundColor = UIColor.systemPink 55 menuView.addSubview(view1) 56 57 58 59 } 60 61 //ラベルを追加する 62 func labelAdd() { 63 64 //タイトル用のラベル 65 labelTitle.frame = CGRect(x: 0 66 , y: 0 67 , width: self.view.bounds.size.width * 1.0 68 , height: self.view.bounds.size.height * 0.05) 69 labelTitle.text = "タイトル1" 70 view1.addSubview(labelTitle) 71 72 //項目用のラベル1 73 label1.frame = CGRect(x: 0 74 , y: 0.5 //←★ここがY軸の開始位置 0.5(画面の中央)にしても0始まりの開始位置になる 75 , width: self.view.bounds.size.width * 0.5 76 , height: self.view.bounds.size.height * 0.65) 77 label1.text = "項目1" 78 label1.backgroundColor = UIColor.systemBlue 79 menuView.addSubview(label1) 80 81 } 82 83 84} 85

試したこと

y軸の値を書き換えたり、
menuView.addSubview(label1)
scrollView.addSubview(label1)
View.addSubview(label1)

など試したのですが、全て開始位置は0,0となり、x軸もy軸も変化しませんでした。

コードでのレイアウトですが、scrollViewに設置したオブジェクトでも配置位置を指定する方法ご存知の方いらっしゃいましたらご教授願います。

宜しくお願いいたします。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

hoshi-takanori

2022/06/19 17:53

y: 0.5 ってことは y 座標が 0.5 ピクセル (画面の高さの 0.5 倍ではなく、1 ピクセルの半分) ってことですけど…。
ataru2222

2022/06/20 11:05

hoshi様 寝る前で完全に寝ぼけておりました(笑) 答え同じところに書いてあるのに、全く気づかずscrollViewのせいにしておりました(笑) いつも助けていただき、本当にありがとうございます。
guest

回答1

0

自己解決

hoshi-takanori様のアドバイスで自己解決できました。

CGRectの中に固定値の0.5を入れておりました。
viewに対する変動値を入れるのは以下のコードでした。

Swift

1//ラベルを追加する 2 func labelAdd() { 3 4 //タイトル用のラベル 5 labelTitle.frame = CGRect(x: 0 6 , y: 0 7 , width: self.view.bounds.size.width * 1.0 8 , height: self.view.bounds.size.height * 0.05) 9 labelTitle.text = "タイトル1" 10 view1.addSubview(labelTitle) 11 12 //項目用のラベル1 13 label1.frame = CGRect(x: 0 14 , y: self.view.bounds.size.height * 0.05 15 , width: self.view.bounds.size.width * 0.5 16 , height: self.view.bounds.size.height * 0.05) 17 label1.text = "項目1" 18 label1.backgroundColor = UIColor.systemBlue 19 menuView.addSubview(label1) 20 21 //項目用のラベル2 22 label2.frame = CGRect(x: self.view.bounds.size.width * 0.5 23 , y: self.view.bounds.size.height * 0.05 24 , width: self.view.bounds.size.width * 0.5 25 , height: self.view.bounds.size.height * 0.05) 26 label2.text = "項目2" 27 label2.backgroundColor = UIColor.orange 28 menuView.addSubview(label2) 29 30 }

イメージ説明

投稿2022/06/20 11:10

ataru2222

総合スコア272

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問