虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > iOS tableView实现头部拉伸并改变导航条渐变色

iOS tableView实现头部拉伸并改变导航条渐变色
类别:IOS编程/Objective-C   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了iOS tableView实现头部拉伸并改变导航条渐变色,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS tableView实现头部拉伸改变,导航条渐变色的具体代码,供大家参考,具体内容如下

    #import "TableViewController.h"static NSString *ident = @"cell";
    #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]#define RGB(r,g,b) RGBA(r,g,b,1.0f)#define ZhuTiColor RGB(76,16,198)#define ZhuTiColorAlpha(alpha) RGBA(76, 16, 198, alpha)// 判断是否是iPhone X#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)// 状态栏高度#define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.f)// 导航栏高度#define NAVIGATION_BAR_HEIGHT (iPhoneX ? 88.f : 64.f)// tabBar高度#define TAB_BAR_HEIGHT (iPhoneX ? (49.f + 34.f) : 49.f)// home indicator#define HOME_INDICATOR_HEIGHT (iPhoneX ? 34.f : 0.f)#define ScreenWidth ([UIScreen mainScreen].bounds.size.width)#define ScreenHeight ([UIScreen mainScreen].bounds.size.height)#define imageHight 200@interface TableViewController ()@property (nonatomic,strong) UIImageView *headImage;
    @property (nonatomic, strong) UIView *headerBackView;
    @property (nonatomic, strong) UIView *mengView;
    @end@implementation TableViewController- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ident];
    self.view.backgroundColor = [UIColor redColor];
    self.tableView.tableHeaderView = self.headerBackView;
    [self.headerBackView addSubview:self.headImage];
    [self.headImage addSubview:self.mengView];
    [self navCleanFromAlpha:0];
    }
    -(void)navCleanFromAlpha:(CGFloat)alpha{
    [self.navigationController.navigationBar setBackgroundImage:[self createImageWithColor:ZhuTiColorAlpha(alpha)] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    }
    -(UIImage*) createImageWithColor:(UIColor*) color{
    CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
    }
    -(UIImageView *)headImage{
    if(!_headImage) {
    _headImage= [[UIImageView alloc]initWithFrame: self.headerBackView.bounds];
    _headImage.image = [UIImage imageNamed:@"1024"];
    }
    return _headImage;
    }
    -(UIView *)mengView{
    if (!_mengView) {
    _mengView = [[UIView alloc]initWithFrame:self.headerBackView.bounds];
    _mengView.backgroundColor = RGBA(1, 1, 1, 0.1);
    }
    return _mengView;
    }
    -(UIView *)headerBackView{
    if (!_headerBackView) {
    _headerBackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, imageHight)];
    [_headerBackView setBackgroundColor:[UIColor lightGrayColor]];
    }
    return _headerBackView;
    }
    - (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.}
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    //---------------------- 图片拉升 ------------------------- //图片高度 CGFloat imageHeight = self.headerBackView.frame.size.height;
    //图片宽度 CGFloat imageWidth = ScreenWidth;
    //图片上下偏移量 CGFloat imageOffsetY = scrollView.contentOffset.y;
    // NSLog(@"图片上下偏移量 imageOffsetY:%f ->",imageOffsetY);
    //上移 if (imageOffsetY < 0) {
    CGFloat totalOffset = imageHeight + ABS(imageOffsetY);
    CGFloat f = totalOffset / imageHeight;
    self.headImage.frame = CGRectMake(-(imageWidth * f - imageWidth) * 0.5, imageOffsetY, imageWidth * f, totalOffset);
    self.mengView.frame = self.headImage.bounds;
    }
    //------------------- 导航条颜色渐变 ---------------------------- CGFloat tableViewOffsetY = [self.tableView rectForSection:0].origin.y - NAVIGATION_BAR_HEIGHT;
    CGFloat contentOffsetY = scrollView.contentOffset.y;
    if (contentOffsetY >= tableViewOffsetY) {
    // scrollView.contentOffset = CGPointMake(0, tableViewOffsetY);
    //定位 [self navCleanFromAlpha:1];
    }
    else {
    CGFloat alpha = scrollView.contentOffset.y/imageHight;
    if (alpha >= 1) {
    alpha = 1;
    }
    if (alpha <= 0) {
    alpha = 0;
    }
    NSLog(@"%.2f",alpha);
    [self navCleanFromAlpha:alpha];
    }
    }
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ident forIndexPath:indexPath];
    // Configure the cell... cell.textLabel.text = [NSString stringWithFormat:@"asdada = %zd",indexPath.row];
    return cell;
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • iOS实现点击图片放大和长按保存图片的示例
  • iOS 点击图片放大效果的实现
  • 解决iOS11图片下拉放大出现信号栏白条的bug问题
  • 利用iOS手势与scrollView代理实现图片的放大缩小
  • iOS tableView实现顶部图片拉伸效果
  • iOS tableview实现顶部拉伸效果
  • iOS TableView头视图根据偏移量下拉缩放效果
  • iOS应用开发中UITableView的分割线的一些设置技巧
  • IOS UITableView和UITableViewCell的几种样式详细介绍
  • iOS tableView实现下拉图片放大效果
相关热词搜索: iOS tableView头部拉伸 iOS tableView导航