有人知道如何从导航栏中删除不需要的动画吗?截图

Posted

技术标签:

【中文标题】有人知道如何从导航栏中删除不需要的动画吗?截图【英文标题】:Anyone know how to remove unwanted animation from navigation bar? Screenshots 【发布时间】:2013-10-28 10:48:20 【问题描述】:

我有一个视图控制器,它通过一个按钮进入一个表格视图控制器。

在视图控制器中,导航栏是完全半透明的(如下图所示)。在表视图控制器上,导航栏设置为白色。

我的问题是,当我在表格视图中按“返回”并返回到视图控制器时,白色导航栏会持续片刻(见上图),然后消失在丑陋的动画中。

额外的导航栏空间:

我希望它始终看起来如何:

我已经尝试了几乎所有我能想到的东西,我所有与导航栏半透明相关的代码都在 viewDidAppear 中,为什么会发生这种情况!?

有人请告诉我我做错了什么!这让我疯了!

【问题讨论】:

抱歉,我没有完全理解……你是说按下“返回”时你会看到两个导航栏一个在另一个下方吗? 您好 NickAtStack,感谢您的评论!我认为实际发生的是表格视图控制器中的非透明导航栏正在返回视图控制器,并将图像向下推(从它通常位于半透明栏下方的位置)。然后导航栏变成了半透明,全部自动分流了!当然,我只是愚蠢,没有按照 Nikos 的建议解决 viewWillDissapear 中的问题。我想是时候喝更多咖啡了! :D 是的,nikos 说得对。您可以使用两个控制器的这些视图功能来制定最佳解决方案 @nickAtStack 也许你会知道这个后续问题的答案? ***.com/questions/19634448/… 【参考方案1】:

在tableviewcontroller集合中:

- (void)viewWillDisappear:(BOOL)animated 
 // put the code for the uinavigation bar styling here.

【讨论】:

完全正确,我不知道为什么我没有想到这一点。非常感谢您的帮助。最后一件事,当我在视图消失时移除导航栏时,它在上一页的动画期间显示为黑色方块。你知道有什么方法可以阻止这种情况发生吗?还是完全删除动画? 我问了一个关于这个的新问题,请过来看看! ***.com/questions/19634448/…【参考方案2】:

你可以做一些这样的事情,下面有一个自定义的后退按钮是代码

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(2, 1, 29, 29);
[backButton setBackgroundImage:[UIImage imageNamed:@"back_button"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
backButton.adjustsImageWhenHighlighted = NO
item.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

其中 item 是 UINavigationItem 的实例 并在后退按钮的选择器中

-(void)backButtonClicked:(id)sender

[self.navigationBar popNavigationItemAnimated:NO];

通过这样做,导航栏将弹出项目但没有动画。

【讨论】:

以上是关于有人知道如何从导航栏中删除不需要的动画吗?截图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用引导程序更改导航栏中的过渡动画?

导航栏中的标题太长

下拉菜单在导航栏中无法按预期工作

如何从导航栏中删除 UIPageControl?

如何从导航栏中删除 UISwipeGestureRecognizer

如何从导航栏中删除阴影线?