2

iOSのChromeアプリのアドレスバーの動作を複製するプロジェクトまたは何かがあるかどうかは誰にもわかりませんか? つまり、下にスクロールすると非表示になり、表の真ん中で上にスクロールするとアドレスバーが表示されます。

ありがとう!

4

1 に答える 1

0

ほとんどのナビゲーション非表示は、スクロール/テーブル/Web ビューからのスクロール イベントをリッスンし、ナビゲーション バーの中央を調整することによって機能します。

ビュー コントローラーを問題のビューのデリゲートにし、いくつかのレベルのロジックを適用します。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat scrollOffset = scrollView.contentOffset.y;
    CGPoint navigationBarCenter = self.navigationController.navigationBar.center;

    // A bunch of calculations
    navigationBarCenter.y = newlyCalculatedPosition;

    self.navigationController.navigationBar.center = navigationBarCenter;
}

この特定の動作について、彼らはスクロールが開始された場所から計算し、「下にスクロールしている場合、ナビゲーション バーの中心は元の中心からスクロールした距離を引いた値にする必要があります。上にスクロールしている場合、ナビゲーション バーの中心は増加するはずです。画面外から通常の位置まで。

次に、スクロールが終了し、ナビゲーション バーが部分的に画面に表示されたときに何をすべきかを決定する必要があります。全部見せますか、それとも一部だけ見せますか?

iOS7より前は、スクロールビューのフレームも気にする必要があります。iOS7 の既定の動作では、View Controller がデバイスのフル サイズに展開されますが、iOS6 の既定の動作では、ナビゲーション バーとツールバーの間のスペースが埋められます。半透明のナビゲーション バーを使用してこれに対処できますが、コンテンツとスクロール インジケーターのインセットを調整して、スクロールしていないときにコンテンツを内側の領域に制限する必要があります。

于 2013-09-24T20:28:38.673 に答える