2014-01-20 58 views
0

我有一個iphone app在我想要執行以下操作:鏈接2的UIScrollView與不同的尋呼尺寸

  1. 類別標題欄是水平scrolling定製分頁大小UIScrollView其中用戶可以通過在各類別之間切換swiping向左或向右。
  2. 標題欄下的類別內容頁面也是水平滾動UIScrollView(全屏寬度分頁)。用戶也可以通過向左或向右滑動在內容頁面之間切換。

我想什麼來實現如下:

  1. 兩個UIScrollViews連接在一起,從而在類別標題欄刷卡刷卡內容頁爲好,或刷在內容頁揮筆的標題欄也是如此。
  2. 如果這是不可能的,那麼至少用戶必須能夠滑動內容頁面並相應地滑動標題(反之亦然)。

我確實記得看到一些應用程序正在實現類似這樣的事情,儘管現在我無法記住它們。任何想法我怎麼去做這件事?

謝謝!

回答

0

我已經在我的應用程序中完成了它。類別視圖就像'展示'視圖,在輕掃或觸摸後觸發通知。內容可以是UICollectionView,所以它有setContentOffset:方法到'goto'dest頁面。或者你可以在contentView中使用addChildViewController,並與pagingEnabled UIScrollView結合使用。

0

參考Making two UIScrollViews follow each others scrolling,我通過將UIScrollView委託設置爲父視圖控制器的兩個滾動視圖並調用scrollViewDidScroll方法來完成此操作。

- (void)matchScrollView:(UIScrollView *)first toScrollView:(UIScrollView *)second { 
    CGPoint offset = first.contentOffset; 
    offset.x = (second.contentOffset.x/second.frame.size.width) * first.frame.size.width; 
    first.contentOffset = offset; 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    if([scrollView isEqual:firstScrollView]) { 
     isSecondScrolling = NO; 
    } else if ([scrollView isEqual:secondScrollView]) { 
     isSecondScrolling = YES; 
    } 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if ([scrollView isEqual:firstScrollView] && isSecondScrolling == NO) { 
     [self matchScrollView:secondScrollView toScrollView:firstScrollView]; 
    } else if ([scrollView isEqual:_midPanelScrollView] && isSecondScrolling == YES) { 
     [self matchScrollView:firstScrollView toScrollView:secondScrollView]; 
    } 
} 

但是我加了布爾isSecondScrolling,從開始時secondScrollView正在滾動matchScrollView停止firstScrollView。否則,會導致每次滾動後secondScrollView的框架略微關閉。