实现导航栏的渐变透明和tableView的tableViewheader图片逐渐变大

一 、导航栏的渐变原理

1.首先我们先把导航栏弄透明了

      那么我们首先得知道,设置navigationBar的BackgroundColor为Clear是没用的,你可以试着设置它的clear,但是没用,原因一会儿我们就知道了。

      设置导航栏透明的方法是这样的:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]

forBarMetrics:UIBarMetricsDefault];

self.navigationController.navigationBar.shadowImage = [UIImage new];

      你可以运行这两句话到你的程序,你会发现这样确实是可以的,那么我们可以从中得到几个信息:

    1)我们设置的是BackgroundImage,说明也许在我们的navigationBar上有一个ImageView的子视图,而我们的看到的导航栏实际上看到的就是这个图片,因此设置它为无图片我们就可以看到透明,而设置backgroundColor却不行。

    2)我们还设置了shadowImage为无图,它其实就是导航栏下面的那根细线,如果你不写第二句话你则会看到一根线。

我们来看一下navigationBar的结构图

实现导航栏的渐变透明和tableView的tableViewheader图片逐渐变大_第1张图片

按照上面的方法来看应该是继承于我们所看到的应该是UIImageView但是在里面却看到的是以View命名,这个地方暂时没搞定,我直接试了一下用ImageView和View都没有错误,毕竟imageView也是View的子类,我们所设置的就是他的透明度

二、关于图片放大的方法,参照代码

     下面直接上代码吧github.com/shuaikun/NavigationBarGradientDemo

你可能感兴趣的:(实现导航栏的渐变透明和tableView的tableViewheader图片逐渐变大)