头部下拉放大(控件随着变化并透明)

原创 2016年06月01日 15:46:32

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];

    //

    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;

    

    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;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

仿QQ空间头部下拉放大控件

看了QQ动脑学院关于Android课程后编写的,下面直接上干货: import android.content.Context; import android.util.AttributeSet...

UITableView头部ImageView下拉放大效果,导航栏透明渐变

为了方便自己记忆,赖的详细写了,先贴上代码,有空在详细解读。 这里导航栏透明用的是这位大神的http://tech.glowing.com/cn/change-uinavigationbar-back...

头部视觉视差(仿QQ控件下拉效果)

看到新版QQ空间出来的时候,首页的下拉的效果比较炫酷,下拉的时候会把整张图片显示出来,松开手之后就会自己恢复原状,不说了,上代码。 这是效果图 public class ParallaxListV...

朋友圈 个人信息 界面 下拉 头部图片视图跟随缩放变化

第一次写文章,有不足之处请见谅,谢谢。 看到有个App个人信息界面或是朋友圈界面 往往顶部有一个背景图片,下滑的时候还能随滑动拉伸,于是自己想了想,写了如下几句代码实现: 【这里就直接用代码了,代码中...

VB.net中COMBOBOX控件下拉颜色的变化

Private Sub filllistboxwithcolors() Me.ComboBox1.DrawMode = DrawMode.OwnerDrawFixed ...

仿美团外卖标题栏 上拉改变背景 默认背景透明 下拉隐藏控件

1,项目效果github地址 2,使用前提 1.注意actionbar的依赖库,目前仅支持 import android.app.ActionBar; 2.actionbar背景渐...
  • ximencx
  • ximencx
  • 2016年05月30日 21:13
  • 1518

控件大小随窗口变化( 可多个控件,增加了tab下窗口大小,CCombox不能下拉 )

控件大小随窗口变化( 可多个控件,增加了tab下窗口大小,CCombox不能下拉 ) //功能,调整控件大小位置 //来源:网上 //类型:笔记 //个人修改过  ...

QQ空间头部图片下拉放大

  • 2015年11月11日 14:25
  • 1.74MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:头部下拉放大(控件随着变化并透明)
举报原因:
原因补充:

(最多只允许输入30个字)