Вопрос по ios, xcode – Xcode / iOS: Как скрыть панель навигации и панель инструментов при прокрутке вниз?

10

Я хотел бы скрыть обе панели на прокрутке вниз на моем iPhone. Когда я прокручиваю вверх, они должны появиться снова .. Как я могу справиться с этим?

Вы пытались использоватьsetToolbarHidden:animated: а такжеsetNavigationBarHidden:animated: вscrollViewDidScroll: когда значение хcontentOffset увеличивается. dasdom
Пожалуйста, используйте английский здесь. Это платформа для людей со всего мира. Когда мы начинаем говорить по-немецки, многие люди не могут следовать. Когда вам нужен совет на немецком языке, отправьте мне письмо. Я думаю, что найти мой адрес электронной почты не должно быть сложно с информацией, которую вы можете найти в моем профиле. dasdom

Ваш Ответ

4   ответа
7
- (void)scrollViewWillBeginScroll :(UIScrollView *)scrollView {
      if (scrollView.contentOffset.y < lastOffset.y) {
                 [toolBar setHidden:YES];
                 [[[self navigationController] navigationBar] setHidden:YES];
      } else{
                 // unhide
      }
}

- (void)scrollViewDidScroll :(UIScrollView *)scrollView {
      /// blah blah
      lastOffset = scrollView.contentOffset;
}

Note : lastOffset являетсяCGPoint и это идет в вашем заголовочном файле:@Interface.

Это CGPoint: так CGPoint lastOffset; Это идет в вашем заголовочном файле: @Interface Blah: NSObject {GCPoint lastOffset; }
Я не могу найтиscrollViewWillBeginScroll метод вUIScrollViewDelegate
Переменная экземпляра.
mdominick: что вы имеете в виду под «iVar»? filou
Я совершенно новичок в этом: S, как я могу определить эту переменную? это NSString? filou
0

Вы можете проверить это, доступно с iOS8, я думаю, что это обратное тому, что вы ищете ... но стоит проверить, потому что это что-то стандартное и именно так работает Safari.

Swift

var hidesBarsOnSwipe: Bool

Objective-C

@property(nonatomic, readwrite, assign) BOOL hidesBarsOnSwipe Discussion

When this property is set to YES, an upward swipe hides the navigation bar and toolbar. A downward swipe shows both bars again. If the toolbar does not have any items, it remains visible even after a swipe. The default value of this property is NO.

0

Вот мое решение в Swift; это прекрасно работает

func scrollViewDidScroll(scrollView: UIScrollView) {
    let navController: UINavigationController = self.navigationController!
    if self.collectionView.panGestureRecognizer.translationInView(self.view).y <= 0.0 {
        defaultCenter.postNotificationName("stuffShouldHide", object: self)
    } else {
        defaultCenter.postNotificationName("stuffShouldUnhide", object: self)
    }
}
4

Принятый ответ у меня не работает, так какscrollViewWillBeginScroll: не является методом делегата.

Вместо этого я делаю

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"BarsShouldHide" object:self];

}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView 
                 willDecelerate:(BOOL)decelerate
{
    if(!decelerate)
        [[NSNotificationCenter defaultCenter] postNotificationName:@"BarsShouldUnhide" 
                                                            object:self];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"BarsShouldUnhide"
                                                        object:self];
}

В любом месте в приложении объекты могут прослушивать это уведомление, например,

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserverForName:@"BarsShouldHide" 
                                                      object:nil
                                                       queue:nil
                                                  usingBlock:^(NSNotification *note) {
        //hide tab bar with animation;
    }];
    [[NSNotificationCenter defaultCenter] addObserverForName:@"BarsShouldUnhide" 
                                                      object:nil
                                                       queue:nil
                                                  usingBlock:^(NSNotification *note) {
        //Unhide tab bar with animation;
    }];
}

Этот код скроет полосы для любого свитка. если хочешь иметь только на пуху, то же самоеlocationOffset Трюк как в принятом ответе должен работать.

Похожие вопросы