在苹果公司最近发布的远程应用程序中,我注意到导航栏的行为方式是独特的,而且我无法对其进行重现。弹出“正在播放”视图控制器时,导航栏对于“正在播放”视图控制器保持透明,而库视图控制器的导航栏也保持半透明(屏幕截图1)。我试图弄清楚他们是使用两个导航控制器还是仅使用一个。我个人觉得他们只使用一种,有两个原因:(1)启用了交互式弹出手势;(2)当您按库视图控制器中的“正在播放”按钮时,正好在正在播放的屏幕完成“推送视图控制器”动画之前,导航栏变为透明(屏幕截图2)。这是我按下视图控制器(将导航栏设置为透明)时遇到的行为。所以我的问题是:苹果如何显示两个视图控制器的两个导航条,就像它们是单独的一样(如屏幕截图1所示),即使切换时(甚至当切换时,条状按钮,导航标题等)的不透明度也是100%按下/弹出按钮,前一个视图控制器的标题会随着新控制器的按下而消失。我尝试过尝试使用 切换时的不透明度为100%(通常在按下/弹出按钮时,前一个视图控制器的标题会随着新控制器的按下而消失)。我尝试过尝试使用 切换时的不透明度为100%(通常在按下/弹出按钮时,前一个视图控制器的标题会随着新控制器的按下而消失)。我尝试过尝试使用viewDidAppear
并且viewWillAppear
在两个视图控制器中都不能重现相同的行为,也不能防止条形按钮褪色。
天哪,我希望我已经很好地解释了这一点,我一想到就会感到困惑!
屏幕截图1(弹出):
屏幕截图2(推送):
我只是下载了该应用程序以确保。使用了两个不同的导航栏。您可以使用交互式弹出手势来查看。注意底部视图控制器上的导航栏如何滑入和滑出。在正常的推入和弹出过渡过程中,导航栏只是在现有栏上淡入和淡出,而栏是固定的。这是直到按下正在播放的视图控制器之前发生的情况。
如果快速浏览,则在正在播放的视图控制器动画中,您会看到底部导航栏消失了。
根据我对UIKit行为的了解以及我在应用程序中看到的内容,这是我认为会发生的事情:
album_vc
=底部列表视图控制器nowplaying_vc
=顶部视图控制器
在nowplaying_vc
的viewWillAppear:
[self.navigationController setNavigationBarHidden:YES animated:YES];
。由于这是在动画块中,因此这将使导航栏在推送动画期间滑出。[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
为此,请设置“非常确定”,因为请注意,状态栏样式的过渡中没有动画。它变成白色。在nowplaying_vc
的viewWillDisappear:
[self.navigationController setNavigationBarHidden:NO animated:YES];
。由于这是在动画块中,因此这将使导航栏在弹出动画期间滑入。[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
再次设置,请注意在交互式弹出手势过程中状态栏仅在没有动画的情况下发生变化。要使的导航栏具有透明的外观nowplaying_vc
,可以将空白图片([UIImage alloc]
)与一起使用setBackgroundImage:forBarPosition:barMetrics:
。
由于应用程序不会旋转,因此我们无法确定上的导航栏nowplaying_vc
是另一个导航控制器的一部分,还是顶部的位置为的导航栏UIBarPositionTopAttached
。就我们所知,那里甚至没有导航栏,而只有后V形视图(视图栏按钮由一个图像视图和一个按钮组成)。
我认为状态栏样式已更改,viewWillAppear:
并且viewWillDisappear:
由于在交互弹出手势期间感觉不自然。我建议使用动画过渡,或者甚至更好的方法是使用新的基于视图控制器的状态栏样式,系统会自行为过渡设置动画。
现代API更新:
您应该使用animateAlongsideTransition:completion:
或animateAlongsideTransitionInView:animation:completion:
API,而不是依靠的隐式动画viewWillAppear:
和viewWillDisappear:
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句