微博个人详情页模仿

2016-01-18  本文已影响545人  BlueEagleBoy

微博个人详情页

一、前言

二、界面布局分析

分析1:因为头视图在向上移动的时候不存在悬停的效果,所以头视图不是tableView的组头。

分析2:在tableView向下移动的时候头视图不会跟着向下移动说明头视图不是表头。

综上分析设计布局:说明头视图是作为一个View添加在控制器上,所以可以设计布局,头视图和选项视图可以是两个view,头视图的view 上添加一个imageView作为卡片标签,在卡片标签上在添加一个imageView用来显示用户的头像图片。

实现思路分析:由效果可以看出,头视图的高是随着tableView的上下移动改变而改变的。所以头视图的高要动态改变。这里我们改变约束的办法动态改变头视图的高度。

界面细节:要先设置tableView的顶部内边距。使tableView的顶部与选项图的底部对齐。

//设置tableView的内边距
self.tableView.contentInset = UIEdgeInsetsMake(TableViewContentTop, 0, 0, 0);

 //不需要添加额外的滚动区域 设置控制器的属性
self.automaticallyAdjustsScrollViewInsets = NO;

//计算上下拖动的距离
CGFloat delta =  self.lastContentOffsetY - scrollView.contentOffset.y;
CGFloat height = headH + delta;

//判断是否达到了最小高度
if (height < headMinH) {
   
   height = headMinH;
}

//给headView的高度约束重新赋值
_headConstrsint.constant = height;

//设置透明度
CGFloat alpha = delta/(headMinH - headH);

if (alpha >= 1) {
   
   alpha = 0.99;
}
self.nameLabel.alpha = alpha;

//定义根据color去初始化一个图片 调用分类方法根据颜色生成图片
UIImage *image = [UIImage imageWithColor:[UIColor colorWithWhite:1 alpha:alpha] ];

//重新设置导航栏的背景图片
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];



上一篇 下一篇

猜你喜欢

热点阅读