2013-10-19 13 views
8

iOS7では、スクロールするとSafariのナビゲーションバーが自動的に縮小します。 Facebook内のナビゲーションバーも完全に消えてしまっています。iOS 7を真似Safari Nav-Bar

この動作を自分でどのように実装しますか? 私はcontentOffsetを動的に調整しなければならないと思います。また、デフォルトのリフレッシュコントロールと衝突すると思いますか?

+0

アップル社の社内フォーラムで質問してください。他の人が確かに興味を持っているので、あなた自身の質問に答えてください。 –

+0

また、この回答を見てください - バーを開いたり閉じたりする方法をアニメーション:http://stackoverflow.com/a/2079655/1633251 –

+0

@DavidHは残念ながら私を助けません。私は一度にナビゲーションバーを隠したくない、人々がスクロールしている間にどれだけスクロールしているのかに応じて変更したい。 – Infinite

答えて

0

これはこれを行う正しい方法ではありませんが、それは私のために働いた。私はこのようにそこUINavigationBarとオーバーライドsizeThatFits:にカテゴリを作成しました:

- (CGSize)sizeThatFits:(CGSize)size 
{ 
    CGSize cSize = self.frame.size; 
    BOOL isPortrait = UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]); 
    CGFloat originalHeight = isPortrait ? 44: 32; 
    cSize.height = self.tag > 0 ? originalHeight/2 : originalHeight; 
    return cSize; 
} 

それから私は(スクロールビューのデリゲートメソッドで)ナビゲーションバーを縮小する必要がある場合:

CGRect navBarFrame = self.navigationController.navigationBar.frame; 
BOOL isPortrait = UIInterfaceOrientationIsPortrait(self.interfaceOrientation); 
CGFloat originalHeight = isPortrait ? 44: 32; 
navBarFrame.size.height = expand ? originalHeight : originalHeight/2; 
self.navigationController.navigationBar.tag = expand ? 0 : 1; 
[UIView animateWithDuration:0.25 animations:^{ 
    self.navigationController.navigationBar.frame = navBarFrame; 
    [self.navigationController.view setNeedsLayout]; 
} 

また、あなたがナビゲーションを非表示にすることアニメーション内のアイテム(UIBarButtonItemsなど)

関連する問題