微博个人详情页模仿

微博个人详情页

一、前言

  • 个人详情页效果,是模仿现在主流的微博个人详情主页界面。
  • 效果如图:

二、界面布局分析

  • 因为看到有导航栏,所以分析出此视图是有一个导航控制器。
  • 头视图添加在tableView上还是作为单个的view?

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

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

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

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

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

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

  • 当设置了tableView的顶部内边距与选项视图的底部对齐的时候,系统默认会添加额外的滚动区域。所以要关闭滚动的区域。
 //不需要添加额外的滚动区域 设置控制器的属性
self.automaticallyAdjustsScrollViewInsets = NO;

  • 在tableView的代理方法ScrollViewDidScroll中实现此逻辑
//计算上下拖动的距离
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];



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,917评论 22 665
  • 重要的或许不是钱而是时间和态度; 重要的或许不是穿什么吃什么住什么而是体验到了什么; 重要的或许不是别人说什么而是...
    3348c4606bad阅读 195评论 0 0
  • 一心一意 Chapter 2 你的爱太奢侈② 走出咖啡馆,天地茫然,我忽然有一种"世界之大却无我藏身...
    一生一个金茶蛋阅读 235评论 0 0
  • 好吧!我承认今天早上上课,我还起迟了。。只能带走。拍照都不好拍。
    aiair阅读 188评论 0 0