Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS音乐应用程序中向上滚动时实现UINavigationBar动画?_Ios_Objective C_Uitableview_Uinavigationcontroller_Core Animation - Fatal编程技术网

如何在iOS音乐应用程序中向上滚动时实现UINavigationBar动画?

如何在iOS音乐应用程序中向上滚动时实现UINavigationBar动画?,ios,objective-c,uitableview,uinavigationcontroller,core-animation,Ios,Objective C,Uitableview,Uinavigationcontroller,Core Animation,当您转到本机iOS音乐应用程序时,您会注意到在查看相册时有一种非常酷的效果 该视图似乎是一个UITableView,它有一个透明的UINavigationController,当您向上滚动时,视图的第一行逐渐消失,并进入带有唱片集标题的导航栏 这里到底发生了什么?有没有一个已知的框架可以做到这一点 这里有一些事情在起作用 如果要实现这一点,我将首先在UITableViewController子类中设置一个观察者,观察UITableView。更具体地说,观察tableview的y位置或当前第一次

当您转到本机iOS音乐应用程序时,您会注意到在查看相册时有一种非常酷的效果

该视图似乎是一个UITableView,它有一个透明的UINavigationController,当您向上滚动时,视图的第一行逐渐消失,并进入带有唱片集标题的导航栏

这里到底发生了什么?有没有一个已知的框架可以做到这一点


这里有一些事情在起作用

如果要实现这一点,我将首先在
UITableViewController
子类中设置一个观察者,观察
UITableView
。更具体地说,观察tableview的
y
位置或当前第一次公开的
indepath
。标题视图(相册艺术、共享、收藏等)将根据
y
位置的相关性设置动画。标题视图的alpha在此也会更改。也在变化;向用户公开了多少页眉视图。headerview是
UITableviewController
的一个属性,可以在动画进行时对其进行操作。变化率可以通过
UIgestureRecognitizer
s速度来推断(这里有一个提示:)


至于导航栏,我会将相册名称设置为导航栏标题(在演示文稿中),但将其隐藏。动画完成后(y位置高于某个阈值),将导航栏的标题设置为不隐藏。

我没有找到任何组件,因此我尝试自己实现一些功能

基本上,我在故事板中设置了一个自定义标题视图,并将其约束到导航栏上,并为约束设置了一个出口

然后在scrollView委托中,我根据scrollView的滚动量和contentOffset调整约束的常量值以及标题和导航栏标题的alpha

我在这里举了一个示例项目:


谢谢@BenJammin我和你说的差不多,只是我打算用第一个表行作为标题,但是正如你提到的,使用tableview标题视图要好得多。但这是大量的手工工作。。。我只是很惊讶没有人构建这样的库。在tableView上不需要观察者,回调在UIScrollViewDelegate(UITableViewDelegate继承自)中;)