2016-04-10 11 views
1

私はUIScrollViewを持っており、その中にUIViewとUITableViewがあります。最初のスクロールダウンでページングを行いたいので、ビューをスワイプして、TableViewを先頭に配置します(垂直ページングのように)。ユーザーがページを開くと、UIViewが表示され、一度スワイプされると、TableViewがページの一番上に配置されてから古典的なTableViewに配置されるまでスクロールします。その後、ユーザーがTableViewの上部よりもスワイプすると、UIViewに垂直ページングが戻されます。UIScrollViewを使用した垂直ページング

UIScrollView 
    |------------------| 
    | |--------------| | 
    | | UIView | | 
    | |    | | 
    | |    | | 
    | |    | | 
    | |    | | 
    | |    | | 
    | |--------------| | 
    | | TableView | | 
    | |    | | 
    | |  ...  | | 
    | |--------------| | 
    |------------------| 

前に、私はジェスチャーを上下にスワイプ&を取得するためscrollViewWillEndDraggingを使用しました。しかし、私は垂直ページングを達成する方法が混乱しています。

func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { 

    if targetContentOffset.memory.y < scrollView.contentOffset.y { 

     // Going Up 
     if Page != 0 { // should also check if TableView is at top. 
      // Scroll Up To UIView 
     } 
    } else { 
     if 0 < scrollOffset { 

      if Page == 0 { 
       // Scroll Down to the top of TableView  

       // I can also check if view is at the top maybe 200 pixels, but  
       // I think this would also work. 

      } 
     } 
    }  
} 

答えて

2
  1. UIScrollViewのは、ちょうどこれをtrueに設定していますが、正しくコンテンツのサイズを設定することを確認し、プロパティをpagingEnabledました。

    let scrollView = UIScrollView(frame: view.bounds) 
    scrollView.pagingEnabled = true 
    view.addSubview(scrollView) 
    
    let pageSize = view.bounds.size 
    
    let upperView = UIView() 
    upperView.backgroundColor = UIColor.redColor() 
    
    let lowerView = UITableView() 
    lowerView.backgroundColor = UIColor.blueColor() 
    
    let pagesViews = [upperView , lowerView] 
    
    let numberOfPages = pagesViews.count 
    
    for (pageIndex,page) in pagesViews.enumerate(){ 
        page.frame = CGRect(origin: CGPoint(x:0 , y:CGFloat(pageIndex) * pageSize.height), size: pageSize) 
        scrollView.addSubview(page) 
    } 
    
    scrollView.contentSize = CGSize(width: pageSize.width, height: pageSize.height * CGFloat(numberOfPages)) 
    
  2. 使用UIPageViewController垂直スクロール方向とができますが、ページのためのUIViewControllerを使用する必要があります。

+0

回答を拡大してください。私はかなり混乱しました。サンプルプロジェクトでデモンストレーションすることができ、それほど質問するのではないなら、非常に感謝します。 – senty

+0

答えを見て、私はスクロールビューの例を追加しました。 –

+0

あなたの例をお寄せいただき、ありがとうございます。しかし、私は質問があります。 ScrollViewのアプローチを使用すると、Storyboardでの使用方法を考えることができませんでした。私は何だったか、i)ViewControllerを作成する、ii)ScrollViewを末尾に&先頭に、下に、左に、右に追加する。 iii)ページングを有効にする。この時点で、私はUIView()とUITableViewの設定と調整方法とストーリーボードの制約を混乱させました。ストーリーボードでScrollViewのアプローチを使用することは不可能だと思いました。 – senty

関連する問題