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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

0回答

1518閲覧

ScrollViewの中の複数のImageViewが画面サイズに合わせて表示できない

nao.0728.2017

総合スコア0

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2020/05/23 08:24

前提・実現したいこと

scrollViewのAutolayoutを正しく設定して、画面サイズに問わず、複数のimageViewを表示させたい。
[swift5]

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

printデバッグでは、frameサイズは表示させたいものと同じ値が出ているのですが、imageViewが3枚とも同じサイズで表示されない。

実装は、baseViewの上にscrollViewを置き、その中にimageViewを呼び出しています。

こちらが制約です。

baseView↓
イメージ説明
scrollView↓
イメージ説明

挙動状況  1枚目は、右側が合っていないのは顕著なのでお分かりだと思いますが、写真ではわからない点で、左にスクロールするとImageの左側とViewががあっていないです。
イメージ説明

2枚目
イメージ説明

3枚目に関しては、画面サイズに収まっていないです。
イメージ説明

該当のソースコード

ViewController

1 2override func viewDidLoad() { 3 super.viewDidLoad() 4 5 //画面サイズを取得する 6 let myAppFrameSize = UIScreen.main.applicationFrame.size.width 7    8   baseView.frame = CGRect(x: 0, y: 0, width: myAppFrameSize, height: 260) 9 10   11 scrollView.isPagingEnabled = true 12 scrollView.frame = CGRect(x: 0, y: 0, width: myAppFrameSize, height: 260) 13 14 15 //pageContorollerの設定 16 pageControl.numberOfPages = images.count 17 print(myAppFrameSize) 18 19 for index in 0..<images.count { 20 frame.origin.x = scrollView.frame.size.width * CGFloat(index) 21 frame.size = scrollView.frame.size 22 23 print("ベイスビュー") 24 print(baseView.frame) 25 print("スクロールビュー") 26 print(scrollView.frame) 27 28 29 //imageViewを宣言 30 let imgView = UIImageView() 31 imgView.contentMode = .scaleAspectFill 32 33 switch index { 34 case 0: 35 imgView.frame = CGRect(x:0, y:0, width:myAppFrameSize, height:260 ) 36 print(imgView.frame) 37 print("1つめ") 38 print(imgView.frame.size.width) 39 case 1: 40 imgView.frame = CGRect(x: myAppFrameSize , y:0, width:myAppFrameSize, height:260 ) 41 print("2つめ") 42 print(imgView.frame.size.width) 43 case 2: 44 imgView.frame = CGRect(x:myAppFrameSize * 2 , y:0, width:myAppFrameSize, height:260 ) 45 print("3つめ") 46 print(imgView.frame) 47 48 49 default: 50 return 51 } 52 53 imgView.image = UIImage(named: images[index]) 54 scrollView.addSubview(imgView) 55 } 56 //content size を決める 57 scrollView.contentSize = CGSize(width:(scrollView.frame.size.width * CGFloat(images.count)), height: scrollView.frame.size.height) 58 scrollView.delegate = self 59 60 print("スクロールビュー のコンテント") 61 print(scrollView.contentSize) 62} 63 64 //scrollviewメソッド 65 //================================================ 66 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 67 var pageNumber = scrollView.contentOffset.x / 68 scrollView.frame.size.width 69 pageControl.currentPage = Int(pageNumber) 70 71 print("offset") 72 print(scrollView.contentOffset.x) 73 print(scrollView.frame.size.width) 74 75 76 } 77 78

試したこと

scrollViewをコード上で宣言して呼び出し、制約をつける。
printデバッグで、x,y座標と幅を表示させる。→ 出したい値は出ているが、解決しない。

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

frameの値は合っていると思うのですが、それ以外どの値をなおせば良いかわかっておりません。

説明不足な点が多々ありますが、どうか解決方法をご教授いだたけると幸いです。
よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/05/23 14:30

プロジェクトごと上げることが可能なら見てみたいんですが、可能でしょうか? いや、用意するのちょっとだるくて。
nao.0728.2017

2020/05/24 01:10

ご返信ありがとうございます。 プロジェクト自体がprivate repositoryで作成しているのですが、その場合はどうすれば良いでしょうか。
退会済みユーザー

退会済みユーザー

2020/05/24 01:33 編集

公開して良いものなら、cloneしてパブリックで別物を上げてもらえば、他人に渡すものとしてご自身のものとは完全に切り離されるのがよいかと。
nao.0728.2017

2020/05/24 01:58

立ち上げるStoryBoardをInfo.plistからMyCirclePageに変えていただけると、幸いです。 該当ファイルは、MyCirclePageControllerになります。
退会済みユーザー

退会済みユーザー

2020/05/24 02:15

中身がないみたいね
nao.0728.2017

2020/05/24 02:18

中身というは、ImageViewのことですか?
退会済みユーザー

退会済みユーザー

2020/05/24 02:22

Latest commit / on Apr 18 になってて、中身が見当たらないので。 これでいいのか、上げたやつの中身確認してみてください。
nao.0728.2017

2020/05/24 02:34

すみません、チーム開発で、masterは、本番環境のみなので、触っていないという状況でした。 大変申し訳ないのですが、他に共有する方法はありますでしょうか。
退会済みユーザー

退会済みユーザー

2020/05/24 02:39

私は共有したいわけではないので…。 チーム開発とかでしたら、仲間内で何とかされたほうが良いかと思います。 微妙な名称とか出てきてアレなので、ご自身でサンプルを作られて実行されれば解決すると思います。 それでわからなかったらそのサンプルを上げてみればいいんではないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問