zoukankan      html  css  js  c++  java
  • UITableView topview渐变的效果

    //
    //  ViewController.m
    //  CDTableViewHeaderDemo
    //
    //  Created by Alex on 15/8/21.
    //  Copyright (c) 2015年 Alex. All rights reserved.
    //
    
    #define KScreen_Width [UIScreen mainScreen].bounds.size.width
    #define KScreen_Height [UIScreen mainScreen].bounds.size.height
    
    #import "ViewController.h"
    
    
    
    const CGFloat BackGroupHeight = 200;
    const CGFloat HeadImageHeight= 80;
    
    @interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIScrollViewDelegate>
    {
        
        UITableView *demoTableView;
        
        UIImageView *imageBG;
        UIView *BGView;
        
        UIImageView *headImageView;
        UILabel *nameLabel;
        UILabel *titleLabel;
        
        UIButton *leftBtn;
        UIButton *rightBtn;
    }
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.automaticallyAdjustsScrollViewInsets=NO;
        [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
       
        
        
        [self setupUI];
    }
    
    -(void)setupUI
    {
        demoTableView=[[UITableView alloc]init];
        demoTableView.delegate=self;
        demoTableView.dataSource=self;
        [demoTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
        demoTableView.frame=[UIScreen mainScreen].bounds;
        demoTableView.contentInset=UIEdgeInsetsMake(BackGroupHeight, 0, 0, 0);
        
        [self.view addSubview:demoTableView];
        
        //
        imageBG=[[UIImageView alloc]init];
        imageBG.frame=CGRectMake(0, -BackGroupHeight, KScreen_Width, BackGroupHeight);
        imageBG.image=[UIImage imageNamed:@"BGimage.jpg"];
        
        [demoTableView addSubview:imageBG];
    //    demoTableView.tableHeaderView = imageBG;
        //
        BGView=[[UIView alloc]init];
        BGView.backgroundColor=[UIColor clearColor];
        BGView.frame=CGRectMake(0, -BackGroupHeight, KScreen_Width, BackGroupHeight);
        
        [demoTableView addSubview:BGView];
        
        //
        headImageView=[[UIImageView alloc]init];
        headImageView.image=[UIImage imageNamed:@"myheadimage.jpg"];
        headImageView.frame=CGRectMake((KScreen_Width-HeadImageHeight)/2, 50, HeadImageHeight, HeadImageHeight);
        
         
        
        [BGView addSubview:headImageView];
        
        //
        
        nameLabel=[[UILabel alloc]init];
        nameLabel.text=@"Alex";
        nameLabel.textAlignment=NSTextAlignmentCenter;
        nameLabel.frame=CGRectMake((KScreen_Width-HeadImageHeight)/2, CGRectGetMaxY(headImageView.frame), HeadImageHeight, 20);
        nameLabel.backgroundColor=[UIColor whiteColor];
        [BGView addSubview:nameLabel];
        
        
        titleLabel=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];
        titleLabel.textColor=[UIColor whiteColor];
        titleLabel.text=@"title";
       
        titleLabel.textAlignment=NSTextAlignmentCenter;
        
        self.navigationItem.titleView=titleLabel;
         titleLabel.alpha=0;
        
        leftBtn=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 40, 30)];
        [leftBtn setTitle:@"left" forState:UIControlStateNormal];
        [leftBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [leftBtn addTarget:self action:@selector(leftBtnAction) forControlEvents:UIControlEventTouchUpInside];
        
        UIBarButtonItem *leftItem=[[UIBarButtonItem alloc]initWithCustomView:leftBtn];
        self.navigationItem.leftBarButtonItem=leftItem;
        
        rightBtn=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 40, 30)];
        [rightBtn setTitle:@"right" forState:UIControlStateNormal];
        [rightBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [rightBtn addTarget:self action:@selector(rightBtnAction) forControlEvents:UIControlEventTouchUpInside];
        
        
        UIBarButtonItem *rightItem=[[UIBarButtonItem alloc]initWithCustomView:rightBtn];
        self.navigationItem.rightBarButtonItem=rightItem;
    
        
    }
    
    
    
    -(void)leftBtnAction
    {
        NSLog(@"leftClick");
    }
    
    
    -(void)rightBtnAction
    {
        NSLog(@"rightClick");
    }
    
    
    
    
    #pragma mark - tableViewDelegate&DataSource
    
    
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 30;
    }
    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
        
        if (cell==nil) {
            cell=[[UITableViewCell alloc]init];
        }
        
        return cell;
    }
    
    
    
    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGFloat yOffset  = scrollView.contentOffset.y;
        CGFloat xOffset = (yOffset + BackGroupHeight)/2;
        NSLog(@"%f",yOffset);
        if (yOffset < -BackGroupHeight) {
            
            CGRect rect = imageBG.frame;
            rect.origin.y = yOffset;
            rect.size.height =  -yOffset ;
            rect.origin.x = xOffset;
            rect.size.width = KScreen_Width + fabs(xOffset)*2;
            
            imageBG.frame = rect;
        }
        
        
        CGFloat alpha = (yOffset+BackGroupHeight)/BackGroupHeight;
        [self.navigationController.navigationBar setBackgroundImage:[self imageWithColor:[[UIColor orangeColor]colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];
        titleLabel.alpha=alpha;
        alpha=fabs(alpha);
        alpha=fabs(1-alpha);
       
        alpha=alpha<0.2? 0:alpha-0.2;
        
        
        BGView.alpha=alpha;
    
    
    }
    
    
    - (UIImage *)imageWithColor:(UIColor *)color
    {
        // 描述矩形
        CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
        
        // 开启位图上下文
        UIGraphicsBeginImageContext(rect.size);
        // 获取位图上下文
        CGContextRef context = UIGraphicsGetCurrentContext();
        // 使用color演示填充上下文
        CGContextSetFillColorWithColor(context, [color CGColor]);
        // 渲染上下文
        CGContextFillRect(context, rect);
        // 从上下文中获取图片
        UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
        // 结束上下文
        UIGraphicsEndImageContext();
        
        return theImage;
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
  • 相关阅读:
    Codeforces Round #646 (Div. 2) B. Subsequence Hate(前缀和/思维)
    Codeforces Round #646 (Div. 2) A. Odd Selection(思维/分类讨论)
    “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 A.点对最大值(树的直径/树形DP)
    “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛)(ABCEFHJ)
    Codeforces Round #645 (Div. 2) C. Celex Update(思维)
    Codeforces Round #645 (Div. 2) D. The Best Vacation(二分+前缀和)
    Codeforces Round #645 (Div. 2) B. Maria Breaks the Self-isolation(贪心)
    Codeforces Round #645 (Div. 2) A. Park Lighting
    ORM之SQLALchemy
    python--10--mysql(2)
  • 原文地址:https://www.cnblogs.com/lidongq/p/4792282.html
Copyright © 2011-2022 走看看