如何使导航栏顺利移动到其位置以上,

时间:2014-01-21 19:20:03

标签: ios uiscrollview uinavigationcontroller uinavigationbar

我使用UIScrolView来显示内容(图像)。我没有使用任何第三方代码。我的Scroller和缩放工作完美(之前没有工作)。现在我想添加一个功能,只需触摸屏幕(即点击一次),导航栏就会如图2所示向上移动。我想同时增加UIscrollview的大小,如图2所示。如果用户再次点击导航栏,回到原来的位置,scrollView恢复到原来的大小和形状。我的scrollView包含水平滚动的图像。

Image1 before tapping

Image2 after tapping

显示导航栏动画的一种方法是,我制作一个自定义视图并将其添加到导航栏的位置并使用以下代码进行动画制作 向上移动

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    customNavigationbar_view.frame=CGRectMake(0, -66, 320, 65);
    [UIView commitAnimations];

哪个会变得太笨拙。我甚至愿意这样做。但是如何使用动画来增加我的滚动视图大小,这样看起来Scrollview的大小并没有让我点击一些东西。如果有第三方提供我想要的所有东西,请告诉我。大多数第三方代码要么难以获得,要么不提供我在项目中需要的所有内容。对于我添加图片的方式感到抱歉。

2 个答案:

答案 0 :(得分:1)

您应该使用:

[self.navigationController setNavigationBarHidden: YES animated: YES];

请参阅Apple Docs

要使用导航条进行scrollView移动,您需要设置autoLayout以将scrollView的顶部固定在viewContoller视图的顶部。

答案 1 :(得分:1)

为滚动视图框架中的更改设置动画: 类似的东西:

- (void) tap:(UITapGestureRecognizer *)gr {
    [self.navigationController setNavigationBarHidden: YES animated: YES];
    [UIView animateWithDuration:1.0 animations:^{
        CGRect frame = self.scrollView.frame;
        frame.origin.y = 0;
        frame.size.height = self.view.bounds.size.height; // or whatever you need to keep it from moving up
        self.scrollView.frame = frame;
    }];
}