如何在UINavigationBar下滑出UIView?

时间:2011-11-23 01:37:35

标签: iphone objective-c cocoa-touch uiview uiviewanimation

目前我正在显示一个从窗口顶部向下滑动到位置的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 个答案:

答案 0 :(得分:9)

您在窗口中的所有其他视图之上添加了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;
    }];
}

答案 1 :(得分:0)

快速浏览一下,看起来你想要研究如何“掩盖”一个图层。 看看这篇文章。

"Masking" an animation? iPhone SDK

如果您要在视图(隐藏视图)下屏蔽下拉菜单,您可以显示动画,而不会看起来像是从导航栏上方看到的,而是在它下方。