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

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

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

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2782閲覧

UIpageControlで現在ページの設定がうまくいきません

sky-blue

総合スコア19

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/07/30 23:18

編集2016/07/30 23:19

「swift docs」を参考に、pageControlを学習しています。pageControlでページ数を"12",現在ページを"7"にして実行したところ、横にスクロールした途端に"0"ページになってしまいます。いろいろ考えて試してみましたがうまくいきませんでした。
どうすればうまくいくのでしょうか?どうか教えてください。お願いします。

###swift docsを参考に書いたソースコード

import UIKit class ViewController: UIViewController, UIScrollViewDelegate{ private var pageControl: UIPageControl! private var scrollView: UIScrollView! override func viewDidLoad() { // ビューの縦、横のサイズを取得する. let width = self.view.frame.maxX, height = self.view.frame.maxY // ScrollViewを取得する. scrollView = UIScrollView(frame: self.view.frame) // ページ数を12にする. let pageSize = 12 // 縦方向と、横方向のインディケータを非表示にする. scrollView.showsHorizontalScrollIndicator = false; scrollView.showsVerticalScrollIndicator = false // ページングを許可する. scrollView.pagingEnabled = true // ScrollViewのデリゲートを設定する. scrollView.delegate = self // スクロールの画面サイズを指定する. scrollView.contentSize = CGSizeMake(CGFloat(pageSize) * width, 0) // ScrollViewをViewに追加する. self.view.addSubview(scrollView) // ページ数分ボタンを生成する. for var i = 0; i < pageSize; i++ { // ページごとに異なるラベルを生成する. let myLabel:UILabel = UILabel(frame: CGRectMake(CGFloat(i) * width + width/2 - 40, height/2 - 40, 80, 80)) myLabel.backgroundColor = UIColor.blackColor() myLabel.textColor = UIColor.whiteColor() myLabel.textAlignment = NSTextAlignment.Center myLabel.layer.masksToBounds = true myLabel.text = "Page\(i)" myLabel.font = UIFont.systemFontOfSize(UIFont.smallSystemFontSize()) myLabel.layer.cornerRadius = 40.0 scrollView.addSubview(myLabel) } // PageControlを作成する. pageControl = UIPageControl(frame: CGRectMake(0, self.view.frame.maxY - 100, width, 50)) pageControl.backgroundColor = UIColor.orangeColor() // PageControlするページ数を設定する. pageControl.numberOfPages = pageSize // 現在ページを7に設定する. pageControl.currentPage = 7 pageControl.userInteractionEnabled = false self.view.addSubview(pageControl) } func scrollViewDidEndDecelerating(scrollView: UIScrollView) { // スクロール数が1ページ分になった時. if fmod(scrollView.contentOffset.x, scrollView.frame.maxX) == 0 { // ページの場所を切り替える. pageControl.currentPage = Int(scrollView.contentOffset.x / scrollView.frame.maxX) } } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

UIPageControlcurrentPageを変更するだけではScrollViewの位置は自動では変更されません。
scrollViewの位置も同時に移動させてください。

横にスクロールした途端に"0"ページになってしまいます。

これはもともと0ページ目にいるからです、適切に変更されています。

swift

1// 現在ページを7に設定する. 2pageControl.currentPage = 7 3scrollView.contentOffset = CGPointMake(width * CGFloat(pageControl.currentPage), 0)

投稿2016/07/31 00:50

編集2016/07/31 01:57
_Kentarou

総合スコア8490

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

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

sky-blue

2016/07/31 08:03

無事解決いたしました。scrollViewの位置も移動させなければいけなかったのですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問