2013-05-21 10 views
13

この効果はどのように達成できますか?UITableViewがスクロールするときにツールバー要素を非表示にする(Facebookのアプリに似ています)

full top view http://i39.tinypic.com/f0vx4l.pnghalf top view http://i40.tinypic.com/2w7486r.png top view almost hidden http://i42.tinypic.com/k95r9.png

+0

あなたが望む効果を示すスクリーンショットの部分はどれですか?ステータス、写真などですか? –

+0

これを行うには、scrollviewデリゲートメソッドを使用する必要があります。これは、テーブルビューの上にあるUIViewです。 – Fogmeister

答えて

18

これはあなたのスクリーンショットから、すぐに顕著ではありませんが、私はあなたがそのヘッダーツールバーはユーザーがスクロールとしてスライドアップしたいと考えている:あなたのコントローラでそう

、のような何かを追加することができます? (私はその部分を明確にすることをお勧めします)

これはいくつかの方法で行うことができ、それらのすべてで独自のスクロールロジックを実装する必要があります。スクロールします。つまり、これを行う方法は次のとおりです。

UITableViewを使用している場合は、ビューコントローラをdelegateとして設定していると仮定します。 UITableViewはすでにUIScrollViewのサブクラスであるため、ビューコントローラにUIScrollViewDelegateを追加するだけです。それが起こると、スクロールイベントが発生します。論理をscrollViewDidScroll:にしたいと思うでしょう。

。単にUIScrollViewを使用している場合は、ビューコントローラをデリゲートとして設定し、UIScrollViewDelegateを実装し、ロジックをscrollViewDidScroll:に設定してください。 、とにかく

- (void) scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint scrollPos = scrollView.contentOffset; 

    if(scrollPos.y >= 40 /* or CGRectGetHeight(yourToolbar.frame) */){ 
     // Fully hide your toolbar 
    } else { 
     // Slide it up incrementally, etc. 
    } 
} 

私は助けを願って:あなたのコードは次のようなものに見えるかもしれません、と述べた

5

あなたが適切にデリゲートを設定している場合は、あなたのテーブルにはscrollViewDidScrollを呼び出します:スクロールしたとき。右、

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.contentOffset.y >0) //means that the user began to scroll down the table 
    { 
     [UIView animateWithDuration:0.4 animations:^{ 
      //animations you want to perform 
     }]; 
    } 
} 
3

私はこの効果のために単純なクラスを作成します。これは、あなたの質問にお答えします UIHidingView is an iOS class that displays UIView element on top UITableView which is hiding when Table View is scrolling.

+1

正常に動作しています。しかし、このカテゴリには大きな問題があります。 このカテゴリを追加した後。 UIImagePickerControllerを使用してギャラリーを表示しようとすると、ios6のアルバムの写真は表示されません。 –

1

ここでは、UIビューの非表示/表示のコードを実装しました。これは、tableviewのスクロール時です。テーブルビューが下にスクロールすると、UIViewが非表示になり、スクロールするとUIViewが表示されます。私はそれがあなたのために働くことを願っ...!

ステップ1: - :scrollViewDidScrollメソッドでこのコードを書き留め - .hファイル

@property (nonatomic) CGFloat previousContentOffset; 

ステップ2でプロパティを1つ作成します。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 

CGFloat currentContentOffset = scrollView.contentOffset.y; 

if (currentContentOffset > self.previousContentOffset) { 
    // scrolling towards the bottom 
    [self.subButtonView setHidden:YES]; 
} else if (currentContentOffset < self.previousContentOffset) { 
    // scrolling towards the top 
    [self.subButtonView setHidden:NO]; 
} 
self.previousContentOffset = currentContentOffset; 
} 
関連する問題