Как я могу сделать слайд UIView из-под UINavigationBar? - PullRequest
2 голосов
/ 23 ноября 2011

В настоящее время я отображаю UIView, который скользит вниз от верхней части моего окна до позиции:

-(void)showNotificationBar
{
    [notificationBar setFrame: CGRectMake(0, 0, 320, 44)];
    [[[UIApplication sharedApplication] keyWindow] addSubview:notificationBar];

    [UIView animateWithDuration:0.5
                          delay:0.0
                        options: UIViewAnimationCurveEaseInOut
                     animations:^{
                         [notificationBar setFrame: CGRectMake(0, 59, 320, 32)];
                     } 
                     completion:^(BOOL finished){
                         NSLog(@"Done!");
                     }];
}

Я хочу, чтобы это выскользнуло из-под моего UINavigationBar. Прямо сейчас он скользит от верхней части окна к нижней части моей панели навигации. Я хочу, чтобы он скользил от нижней части панели навигации, чтобы отобразить себя. Теперь точно уверены, как это сделать?

Ответы [ 2 ]

9 голосов
/ 23 ноября 2011

Вы добавляете notificationBar поверх всех других видов в вашем окне. Вам необходимо добавить его в качестве подпредставления суперпредставления панели навигации под панелью навигации.

Допустим, ваш UINavigationBar находится в собственности self.navBar. Попробуйте это:

- (void)showNotificationBar
{
    CGRect frame = CGRectMake(0, 0, 320, 44);
    frame.origin.y = CGRectGetMaxY(self.navBar.frame) - frame.size.height;
    notificationBar.frame = frame;

    [self.navBar.superview insertSubview:notificationBar belowSubview:self.navBar];

    [UIView animateWithDuration:0.5 animations:^{
        CGRect frame = notificationBar.frame;
        frame.origin.y = CGRectGetMaxY(self.navBar.frame);
        notificationBar.frame = frame;
    }];
}
0 голосов
/ 23 ноября 2011

Беглый взгляд на это, и похоже, что вы хотите изучить, как «замаскировать» слой. Посмотрите на этот пост.

"Маскировка" анимации? iPhone SDK

Если бы вы скрывали раскрывающееся меню под видом (скрытым видом), анимацию можно было бы отобразить, не выглядя так, как будто она была над панелью навигации, но под ней.

...