iOS开发之——下拉刷新和渐变横幅

引子

iOS中利用系统自带的属性设置渐变的横幅。

tableView的渐变banner(横幅)

UITableView是UIScrollView的子类,所以后者有的属性,tableView都有,所以我们可以通过代理方法:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView,通过滑动的偏移量来设置banner的透明度。至于设置系数,我是这么做:先大致想好需要在哪一段位移中改变alpha值,然后选取两个端点,建立一个二元一次方程组,联立求解即可。

如果不想让横幅跟着移动,那也可以在这个方法里实时调整banner的y值。

颜色渐变

iOS有比较简单的生成颜色渐变的方法——CAGradientLayer。官方文档。它包括以下属性:

  • colors:CGColor颜色数组,也就是想渐变的颜色值。
  • locations:分界点。范围是0–1,默认值是nil。这个值如果设置的话需要和colors数组中的颜色个数相等,否则不会出来渐变的效果。相当于某种颜色在容器中开始和结束渲染的比例。
  • startPoint:开始点。默认值是(0.5,0.0)。
  • endPoint:结束点。默认值是 (0.5,1.0)。这两个构成一个组合,可以设置颜色的渲染方向。例如(0,0)和(1,1)就可以设置颜色沿着对角线的方向渲染。
  • type:渲染类型。枚举值。我暂时没用到。

初始化:

self.bannerImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_W, 60)];
self.bannerImageView.contentMode = UIViewContentModeScaleAspectFill;
self.bannerGradientLayer = [CAGradientLayer layer];
self.bannerGradientLayer.frame = self.bannerImageView.bounds;
self.bannerGradientLayer.colors = @[
(id)[UIColor colorWithWhite:0.2 alpha:0.6].CGColor,
// (id)[UIColor blueColor].CGColor,
// (id)[UIColor redColor].CGColor,
(id)[UIColor clearColor].CGColor
];
//如果是@[@1.0,@1.0],则没有渐变效果,整个就是第一种颜色的效果。我根据这一点设置banner的渐渐出现的效果。
self.bannerGradientLayer.locations = @[@0, @1.0];
[self.bannerImageView.layer addSublayer:self.bannerGradientLayer];