2017-05-05 26 views
1

最後の目標は、スクロールダウンしたときにセグメント化されたコントロールが上に上がるtwitter iOSアプリの「Me」タブと同じスクロール効果を作成することです上にスクロールバックされない限り、固定されています。タッチがどこにあるかに関係なく、UIScrollViewをスクロールする

解決策を以下に示します。上部にはビュー、セグメント化されたコントロール、およびセグメント化されたコントロールの下にあるテーブルビューがあります。これらの要素はすべて、画面全体を占めるスクロールビュー内に埋め込まれています(マイナスタブ&ナビゲーションバー)。

重要な問題があります:一番上のビューまたは分割されたコントロールからスワイプしてスクロールを開始すると、すべての要素が埋め込まれているスクロールビューがスクロールされます。テーブルビューをスクロールすると、一番上のビューとセグメント化されたコントロールは影響を受けません。

画面上でスクロールする場所に関係なく、要素が埋め込まれているスクロールビューをスクロールするにはどうすればよいですか?

enter image description here

答えて

1

私は私のプロジェクトの一つに似たレイアウトを持っていました。私はSJSegmentedViewControllerを使用しました。

これは、headerViewController、中間セグメントのデータソース、およびこれらのセグメントのviewController配列が必要です。

このライブラリを使用すると、画面上の任意の場所からスクロールすることができます。さらに、分割されたコントロールが上にスクロールし、ユーザーが一番上にスクロールします。ここで

は、あなたがこれを実装する方法です。

import SJSegmentedScrollView 

が続いheaderViewControllerおよびセグメント用の2つのviewControllers(セイビデオとヒント)を作成し、あなたのクラスにモジュール

まず輸入

let headerViewController = HeaderViewController() 
let video = VideoController() 
let tips = TipsController() 

これらのコントローラを設定し、次のようにセグメント化されたコントロールのタイトルを設定します。

segmentController.headerViewController = header 
segmentController.segmentControllers = [video,tips] 
video.title = "Video" 
tips.title = "Tips" 

その後

addChildViewController(segmentController) 
containerView.addSubview(segmentController.view) 
segmentController.view.frame = self.containerView.bounds 
segmentController.didMove(toParentViewController: self) 
ここ

コンテナビューは、UIContainerView

最終あるコンテナビューに追加しますが、この関数を呼び出した後、子コントローラ(のVideoController、TipsController)にコールすることを確認してくださいこれらのコントローラでは、画面のどこからでもスクロールすることができます。

extension HomeListingViewController: SJSegmentedViewControllerViewSource { 

    func viewForSegmentControllerToObserveContentOffsetChange() -> UIView { 
     //Scrollview in child controllers 
     return scrollview 
    } 
} 

あなたはhere

は、この情報がお役に立てば幸い完全なドキュメントを見つけることができます!

関連する問題