gpt4 book ai didi

ios - 在透明导航栏之间过渡到半透明

转载 作者:IT王子 更新时间:2023-10-29 07:52:47 24 4
gpt4 key购买 nike

在 Apple 最近发布的 Remote 应用程序中,我注意到导航栏的行为方式是独一无二的,但我无法重现它。弹出“正在播放” View Controller 时,“正在播放” View Controller 的导航栏保持透明,库 View Controller 的导航栏也保持半透明(屏幕截图 1)。我想弄清楚他们是使用两个导航 Controller 还是只使用一个。我个人认为他们只使用一个有两个原因(1)启用了交互式弹出手势; (2) 当您按下库 View Controller 中的“正在播放”按钮时,就在正在播放的屏幕完成“推送 View Controller ”动画之前,导航栏变得透明(屏幕截图 2)。这是我在推送 View Controller (将导航栏设置为透明)时遇到的行为。所以我的问题是:Apple 如何将两个 View Controller 的两个导航栏呈现为单独的(如屏幕截图 1),即使是栏按钮、导航标题等...在切换时也是 100% 不透明度(通常在按下/弹出前一个 View Controller 的按钮和标题会随着新 Controller 的按下而淡出)。我试过在两个 View Controller 中使用 viewDidAppearviewWillAppear 中的条形色调颜色,但无法重现相同的行为,也无法阻止条形按钮褪色。

天哪,我希望我已经解释清楚了,光是想想我就糊涂了!

屏幕截图 1(弹出): Screenshot 1

屏幕截图 2(推送): Screenshot 2

最佳答案

我刚刚下载了应用程序以确保。使用了两个不同的导航栏。您可以使用交互式弹出手势看到这一点。注意底部 View Controller 上的导航栏是如何滑入和滑出的。在正常的推送和弹出转换期间,导航项只是在现有栏上淡入和淡出,而栏是静止的。这是在推送正在播放的 View Controller 之前发生的情况。

如果你看得很快,在正在播放的 View Controller 动画中,你会看到底部导航栏消失了。

根据我对 UIKit 行为的体验以及我在应用程序中看到的情况,我认为会发生以下情况:

album_vc = 底部, ListView Controller nowplaying_vc = 顶 View Controller

  • nowplaying_vcviewWillAppear:

    • 使用 [self.navigationController setNavigationBarHidden:YES animated:YES]; 将导航栏设置为隐藏。由于这是在动画 block 中,这将使导航栏在推送动画期间滑出。
    • Set [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; 对此非常确定,因为请注意状态栏样式的转换中没有动画。它只是变白了。
  • 关于 nowplaying_vcviewWillDisappear:

    • 使用 [self.navigationController setNavigationBarHidden:NO animated:YES]; 将导航栏设置为显示。由于这是在动画 block 中,这将使导航栏在弹出动画期间滑入。
    • 设置 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; 再次注意,在交互式弹出手势期间,状态栏只是发生变化而没有动画。

要实现nowplaying_vc导航栏的透明外观,可以使用空图像([UIImage alloc])和setBackgroundImage:forBarPosition:barMetrics :

由于应用程序不旋转,我们无法确定 nowplaying_vc 上的导航栏是另一个导航 Controller 的一部分,还是只是顶部位置为 的导航栏UIBarPositionTopAttached。据我们所知,那里甚至没有导航栏,只有一个后 V 形 ImageView (后栏按钮由一个 ImageView 和一个按钮组成)。

我认为 viewWillAppear:viewWillDisappear: 中的状态栏样式已更改,因为在交互式弹出手势期间存在不自然的感觉。我建议使用动画过渡,或者更好的是,使用新的基于 View Controller 的状态栏样式,系统会自行设置动画过渡。


现代 API 的更新:

您应该使用 animateAlongsideTransition:completion:animateAlongsideTransitionInView:animation:completion: API,而不是依赖于 viewWillAppear: 的隐式动画> 和 viewWillDisappear:

关于ios - 在透明导航栏之间过渡到半透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com