2011-07-03 27 views
2

我正在構建顯示新聞文章的iphone應用程序。通過滑動切換視圖的方法

對於閱讀一篇文章,我有一個UITableView的視圖,它顯示文章的內容。

我需要的是: 我希望用戶能夠用手指輕掃下一篇文章,效果將類似於蘋果的pageControl樣本,或者像在圖片之間滑動(來回移動視覺效果效果)

問題: 做到這一點的唯一方法,是用的UIScrollView和「頁」, 或存在着包括檢測掃動操縱+開關效應+推視圖控制器簡單的方法?

我還想過的其他方向是,如果我可以用一個水平tableview創建一個視圖,每個單元格將顯示一篇文章,並且用​​戶將滑動移動到下一個單元格。

BTW-福克斯新聞應用程序爲iPhone有這個功能,但似乎他們使用「頁面控制」解決方案。

任何信息將有所幫助。

回答

8

頁面控制不是我認爲的唯一解決方案。 想象一下,你得到了意見,你的viewController,然後當你發現輕掃其方向, 所有您需要的是:

  1. 添加內容,認爲會出現
  2. 添加視圖作爲視圖控制器的子視圖
  3. 地方這一觀點上的正確側(如果用戶刷向右向左)
  4. 最後動畫視圖移動(位置),以正確的方向

,大功告成......

下面是一個例子:

// in your uiviewcontroller subclass 
UIVIew *viewOne, *viewTwo; 

-(void)swipeFromView:(UIVIew *)visibleView 
       toView:(UIView *)pushingView 
      direction:(UISwipeGestureRecognizerDirection)aDirection { 
    // assuming the content of pushingView already set 
    CGPoint visibleViewCenter = [visibleView center]; // register the center 
    CGRect visibleViewFrame = [visibleView frame]; 
    CGPoint pushingViewCenter, visibleViewNewCenter; 

    visibleViewNewCenter.y = visibleViewCenter.y; 
    pushingViewCenter.y = visibleViewCenter.y; 

    // I use 2 here, but you would make more calculations 
    pushingViewCenter.x = 2 * visibleViewFrame.width; 
    visibleViewNewCenter.x = -1 * 2 * visibleViewFrame.width; 
    // reversing x if direction is right 
    if(aDirection == UISwipeGestureRecognizerDirectionRight) { 
     pushingViewCenter.x *= -1; 
     visibleViewNewCenter.x *= -1; 
    } 
    // once the tmp center for pushingView is calculated 
    // set it, and run the animation 
    [pushingView setCenter:pushingViewCenter]; 
    [UIVIew animateWithDuration:theDurationYouWant 
        animations:^{ 
     [visibleView setCenter:visibleViewNewCenter]; 
     [pushingView setCenter:visibleViewCenter]; 
    }]; 
} 

// somewhere else, you handle the swipe 
-(void)handleSwipeGesture:(UISwipeGestureRecognizer *)sender { 
    // set content, etc 
    [self swipeFromView:viewOne toView:viewTwo direction:[sender direction]]; 
} 

希望這有助於。