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

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

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

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

422閲覧

scrollViewのページの移動先を変更したい

Hkr-Y

総合スコア96

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2022/08/15 03:09

問題

scrollViewに大きさの違うViewを設定すると、ページ遷移の際に表示されるViewがずれる不具合が発生します。

したいこと

一回目のスクロールで第二ページが画面の真ん中に表示され、
二回目のスクロールで第三ページ目が表示されるようにしたいです。

試したこと

・delegateを用いてスクロールイベントを検知し、scroll.isScrollEnabled = falseで自動にスクロールされるのを停止し、その後に自らViewをanimationで移動させてみました。 -> 本来のscrollViewのようなめらかなスクロールアニメーションを実装できませんでした。
UISwipeGestureRecognizerを用いて、スワイプを検知しViewを移動させてみました -> こちらもなめらかなViewの動きを実装できませんでした。

質問したいこと

・scrollの遷移先を細かく設定することはできますか?

サンプルコード

Swift

1 2//UIViewContoroller内に記述 3 override func viewDidLoad() { 4 super.viewDidLoad() 5 6 let scrollView = UIScrollView() 7 var subView: UIView? 8 var subViewWidth = UIScreen.main.bounds.width*3/4 9 let scrollViewWidth = UIScreen.main.bounds.width 10 let scrollViewContentWidth = subViewWidth*8/3 11 let frameHeight = UIScreen.main.bounds.height 12 let frameWidth = UIScreen.main.bounds.width 13 var width: CGFloat? 14 var x: CGFloat = 0 15 16 scrollView.backgroundColor = .brown 17 scrollView.isPagingEnabled = true 18 scrollView.showsHorizontalScrollIndicator = false 19 scrollView.frame = CGRect( 20 x: 0, 21 y: 0, 22 width: frameWidth, 23 height: frameHeight 24 ) 25 scrollView.contentSize = CGSize( 26 width: scrollViewContentWidth, 27 height: frameHeight 28 ) 29 self.view.addSubview(scrollView) 30 31 for i in 0 ..< 3 { 32 if i == 0 { 33 subView = UIView() 34 subView!.backgroundColor = .red 35 width = subViewWidth 36 } else if i == 1 { 37 subView = UIView() 38 subView!.backgroundColor = .blue 39 x += subViewWidth 40 width = subViewWidth*2/3 41 } else { 42 subView = UIView() 43 subView!.backgroundColor = .green 44 x += subViewWidth*2/3 45 width = subViewWidth 46 } 47 subView!.frame = CGRect( 48 x: x, 49 y: 0, 50 width: width!, 51 height: frameHeight 52 ) 53 scrollView.addSubview(subView!) 54 } 55 }

何卒よろしくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

https://www.fuwamaki.com/article/87
こちらのサイトを参考に実装することができました。

投稿2022/08/15 08:36

Hkr-Y

総合スコア96

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問