2016-04-10 5 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 имеет 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 и их ограничения на Storyboard. Я думал, что использовать ScrollView с помощью Storyboard невозможно, правда? – senty

Смежные вопросы