在苹果最近发布的远程应用程序中,我注意到导航栏的行为方式是独特的,但我无法重现它。弹出“正在播放”视图控制器时,“正在播放”视图控制器的导航栏保持透明,而库视图控制器的导航栏也保持半透明(屏幕截图 1)。我试图弄清楚他们是否使用两个导航控制器或仅使用一个。就我个人而言,我觉得他们只使用其中一个有两个原因(1)启用了交互式弹出手势; (2) 当您按下库视图控制器中的“正在播放”按钮时,就在当前播放屏幕完成“推送视图控制器”动画之前,导航栏变得透明(屏幕截图 2)。这是我在推动视图控制器(将导航栏设置为透明)时遇到的行为。所以我的问题是:Apple 如何呈现两个视图控制器的两个导航栏,就好像它们是单独的一样(如屏幕截图 1 所示),甚至栏按钮、导航标题等...在切换时都是 100% 不透明度(通常在按下/弹出前一个视图控制器的按钮和标题会随着新控制器的按下而消失)。我尝试过使用条形色调颜色viewDidAppear
and viewWillAppear
在两个视图控制器中,但无法重现相同的行为,并且无法防止栏按钮消失。
天哪,我希望我已经解释得很好了,光是想想我就感到困惑!
Screenshot 1 (Popping):
Screenshot 2 (Pushing):
我刚刚下载了该应用程序以确保。使用两个不同的导航栏。您可以通过使用交互式弹出手势来查看这一点。请注意底部视图控制器上的导航栏如何滑入和滑出。在正常的推送和弹出转换期间,导航项只是在现有栏上淡入和淡出,而栏是静止的。这就是当前播放的视图控制器被推送之前所发生的情况。
如果您快速查看,在正在播放的视图控制器动画期间,您可以看到底部导航栏消失。
根据我对 UIKit 行为的经验以及我在应用程序中看到的内容,我认为会发生以下情况:
album_vc
= 底部列表视图控制器nowplaying_vc
= 顶视图控制器
实现导航栏的透明外观nowplaying_vc
,您可以使用空图像([UIImage alloc]
) with setBackgroundImage:forBarPosition:barMetrics:
.
由于应用程序不旋转,我们无法确定导航栏是否打开nowplaying_vc
是另一个导航控制器的一部分,或者只是顶部的导航栏,位置为UIBarPositionTopAttached
。据我们所知,那里甚至没有导航栏,只有一个后 V 形图像视图(后栏按钮由图像视图和按钮组成)。
我认为状态栏样式已更改viewWillAppear:
and viewWillDisappear:
由于交互弹出手势时存在不自然的感觉。我建议使用动画过渡,或者更好的是,使用新的基于视图控制器的状态栏样式,系统会自行对过渡进行动画处理。
现代 API 更新:
您应该使用animateAlongsideTransition:completion:
or animateAlongsideTransitionInView:animation:completion:
API,而不是依赖于隐式动画viewWillAppear:
and viewWillDisappear:
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)