53523


下記のサイトを見てアプリのチュートリアルを作成しているのですが、なぜかスクロールできません。なぜでしょうか？

[[Swift] たった40行のUIScrollViewを使ったシンプルなチュートリアル画面サンプル -
Qiita](https://qiita.com/osamu1203/items/a1a361f9ff00e93258e2)

[code]

    var scrollView: UIScrollView!
    var pageControll: UIPageControl!
    let pageNum = 4
    let pageColors:[Int:UIColor] = [1:UIColor.red, 2:UIColor.yellow,3:UIColor.blue,4:UIColor.green]
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.scrollView = UIScrollView(frame: self.view.bounds)
        self.scrollView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width * CGFloat(pageNum), height: self.view.bounds.height)
        self.scrollView.isPagingEnabled = true
        self.scrollView.showsHorizontalScrollIndicator = false
        self.scrollView.delegate = self
        self.view.addSubview(self.scrollView)
        self.pageControll = UIPageControl(frame: CGRect(x: 0, y: self.view.bounds.height - 50, width: self.view.bounds.width, height: 50))
        self.pageControll.numberOfPages = pageNum
        self.pageControll.currentPage = 0
        self.view.addSubview(self.pageControll)
    
        for p in 1...pageNum {
            let v = UIView(frame: CGRect(x: self.view.bounds.width * CGFloat(p-1), y: 0, width: self.view.bounds.width, height: self.view.bounds.height))
            v.backgroundColor = self.pageColors[p]
            self.scrollView.addSubview(v)
        }
    }
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let pageProgress = Double(scrollView.contentOffset.x / scrollView.bounds.width)
        self.pageControll.currentPage = Int(round(pageProgress))
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
[/code]

}


CC BY-SA 4.0
2019-03-18T03:47:47.600
53512
2019-03-18T08:12:42.297
2019-03-18T05:26:38.820
3060
32274
question
swift ios swift4
スクロールができません


参照している記事では

[code]

    self.scrollView = UIScrollView(frame: self.view.bounds)
    self.scrollView.contentSize = CGSizeMake(self.view.bounds.width * CGFloat(pageNum), self.view.bounds.height)
    
[/code]

と `contentSize` を指定しているのに対して、あなたのコードでは

[code]

    self.scrollView = UIScrollView(frame: self.view.bounds)
    self.scrollView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width * CGFloat(pageNum), height: self.view.bounds.height)
    
[/code]

と、`frame`しか指定していません。  
`frame`は親のViewから見た、そのビューの位置とサイズを表します。  
なので、`scrollView.frame.width` が親Viewの横幅 `bounds.width` の数倍あるとすると、その scrollView
は親Viewからはみ出して存在していることになります。

ScrollViewの中身のサイズを表すのは `contentSize` です。  
`contentSize` を指定してみてはいかがでしょうか。


CC BY-SA 4.0
2019-03-18T08:12:42.297
53523
2019-03-18T08:12:42.297
23829
53512
answer