新浪微博个人详情页

知识点:

tableView中结合偏移量,内边距计算等逻辑实现,关于偏移量的详细求法,可以看我上一篇文章《scrollView的几个重要属性》
稍微注意的是:
- 1.显示主页 微博 相册的选项栏,是组头视图
- 2.显示背景头像及头像的view是头部视图
- 3.向下拖动,图片拉伸的细节:在SB中设置图片填充模式(Mode):AspectFill. 并且设置超出父视图的子控件剪切掉
- 设置
- 设置导航条背景图片时,使用了一个image分类
其它实现说明,都在代码注释中

效果图

显示效果

#import "PersonViewController.h"#define kHeadViewH 200#define kHeadViewMinH 64#define kTabBarViewH 44#import "UIImage+Image.h"@interface PersonViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
//头部视图与父视图顶部的距离约束
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *headViewYCons;
//头部视图的高度
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *headViewHCons;
//用户头像
@property (weak, nonatomic) IBOutlet UIImageView *userIcon;/***  记录下最开始的y轴偏移量*/
@property (nonatomic, assign) CGFloat oriOffsetY;@property (nonatomic, weak) UILabel *titleLabel;@end@implementation PersonViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.// 记录下最开始的y轴偏移量-264_oriOffsetY = -(kHeadViewH + kTabBarViewH);// 设置内边距self.tableView.contentInset = UIEdgeInsetsMake(kHeadViewH + kTabBarViewH, 0, 0, 0);// 不需要自动调节额外的滚动区域self.automaticallyAdjustsScrollViewInsets = NO;//设置圆角头像self.userIcon.layer.cornerRadius = self.userIcon.bounds.size.height * 0.5;self.userIcon.layer.borderWidth = 2;self.userIcon.layer.borderColor = [UIColor whiteColor].CGColor;self.userIcon.layer.masksToBounds = YES;// 设置导航条内容[self setUpNav];}#pragma mark - scrollView代理方法
// 监听用户的滚动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{// 获取当前最新偏移量CGFloat offsetY = scrollView.contentOffset.y;// 计算下最新偏移量和最初偏移量的差值// 就是用户滚动的区域CGFloat delta = offsetY - _oriOffsetY;// 移动头部视图
//    _headViewYCons.constant = 0 - delta;// 修改头部视图的高度CGFloat headH = kHeadViewH - delta;if (headH < kHeadViewMinH) {headH = kHeadViewMinH;}_headViewHCons.constant = headH;// 处理导航条// 计算当前的透明度CGFloat alpha = delta / (kHeadViewH - kHeadViewMinH);if (alpha > 1) {alpha = 0.99;}// 设置标题的文字颜色_titleLabel.textColor = [UIColor colorWithWhite:0 alpha:alpha];// 获取导航条的颜色UIColor *navColor = [UIColor colorWithWhite:1 alpha:alpha];// 设置导航条背景图片 使用一个根据颜色生成image的分类[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:navColor] forBarMetrics:UIBarMetricsDefault];
}#pragma mark - tableView数据源
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{return 20;
}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{static NSString *ID = @"cell";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];if (cell == nil) {cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];}cell.backgroundColor = [UIColor colorWithRed:arc4random_uniform(254)/255.0 green:arc4random_uniform(254)/255.0 blue:arc4random_uniform(254)/255.0 alpha:1.0];return cell;}#pragma mark - 设置导航条内容
- (void)setUpNav
{// 在iOS7之后,默认会给导航控制器里所有UIScrollView顶部都会添加额外的滚动区域64// 设置不需要添加额外滚动区域self.automaticallyAdjustsScrollViewInsets = NO;// 设置导航条透明// UIBarMetricsDefault:必须传入这个家伙// 传入一个空的UIImage[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];// 设置导航条阴影背景[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];// 设置导航条标题// 设置UILableUILabel *titleLabel = [[UILabel alloc] init];titleLabel.text = @"Lee枭枭";titleLabel.textColor = [UIColor colorWithWhite:0 alpha:0];// 设置尺寸,尺寸最好根文字一样大// 自适应[titleLabel sizeToFit];_titleLabel = titleLabel;[self.navigationItem setTitleView:titleLabel];
}@end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/251362.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

iOS微博个人主页

详细项目链接&#xff1a;Github地址&#xff1a;https://github.com/MinLee6/WeiboUserHomePage 创建控制器LMMyHomeController.h // // LMMyHomeController.h // lingfo // // Created by limin on 16/5/24. // Copyright © 2016年 anxin. All rights reserved. //#…

抽象轻松JavaScript

想象一样&#xff0c;现在有一个苹果&#xff0c;两个苹果&#xff0c;一箱苹果在你面前 看&#xff0c;上面的三种苹果&#xff0c;&#xff08;我写的是苹果就是苹果&#xff09; 语境1 例如你现在要搬运苹果&#xff01; 那么现在上面有苹果&#xff0c;一个&#xff0c;两…

前端知识基础大全(HTML5+CSS3)

HTML5CSS3 一、HTML入门 &#xff08;一&#xff09;web发展历 蒂姆伯纳斯李 1989年 提出了web理念 1990年 原始浏览器 HTML —>网站 1991年 w3c组织 (规范组织) web1.0时代 开始 特点: 用户只是阅读者 代表: 网易 搜狐 新浪 1995年 布兰登艾奇 javascript 交互 we…

树与二叉树理论(知识基础)

树与二叉树理论 文章目录 树与二叉树理论1.树的概念与结构2.二叉树的概念与结构3.二叉树的存储结构 1.树的概念与结构 1.树的概念&#xff1a;树是一种非线性的数据结构&#xff0c;它是由n个或0个有限结点组成一个具有层次关系的集合 注意&#xff1a;树形结构中&#xff0c;…

二月券商金工精选

✦研报目录✦ ✦简述✦ 按发布时间排序 中信期货 组合优化专题&#xff08;一&#xff09;&#xff1a;截面回归与因子正交的二重奏——【中信期货金融工程】 发布日期&#xff1a;2023-02-01 关键词&#xff1a;期货、截面回归、因子正交 主要内容&#xff1a;本报告处理“…

申万宏源证券选用Itiviti的技术作ETF期权做市

-Itiviti在中国拥有大量及多元化的客户群 上海2018年8月21日电 /美通社/ -- 全球领先的多种资产交易技术与金融基础设施供应商 Itiviti 今天宣布&#xff0c;中国其中一间领先的证券行申万宏源证券有限公司&#xff08;简称「申万宏源」&#xff09;已经选用 Itiviti 的做市解…

财经数据----同花顺技术选股,附代码

因为我最近在学习量化框架pyalgotrade比较忙&#xff0c;所以我写文章的时间比较少&#xff0c;因为白天要上课比较忙&#xff0c;所以我介绍一些有意义的数据。比如同花顺财经的技术选股。我们打开浏览器&#xff0c;搜搜同花顺财经进入数据我们看到数据中心有一个技术选股数据…

失传百年的致富经典(一):投资真经(股票,债券,基金)

能帮助你提升认知&#xff0c;是我创作的最大动力 点赞收藏评论 (1)普盲: 炒股&#xff0c;炒的就是股票&#xff0c;股票是由股份公司发行的所有权凭证&#xff0c;是股份公司为募集资金而发行给各个股东作为持股凭证并借以取得利息和红利的一种有价证券。例如: 你买入了100股…

公募基金历史数据基础分析教程

近年来&#xff0c;国内的公募基金处于高速发展阶段&#xff0c;对于基金数据的分析需求也越来越多。本教程以公募基金公开市场数据和历史净值数据的基础分析作为案例&#xff0c;介绍一些关于基金数据的基础概念和 DolphinDB 时序数据库在时间序列数据分析上的一些基础范式和方…

一、版本控制

1、什么是版本控制 1.1、版本控制的概念 版本控制&#xff08;Revision control&#xff09;是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本的软件工程技术。 1.2、版本控制的作用…

设计模式六大原则的理解

本文参考&#xff1a; 设计模式简介 | 菜鸟教程 (runoob.com) 六大设计原则之依赖倒置原则&#xff08;DIP&#xff09; - 简书 (jianshu.com) 设计模式的六大原则有&#xff1a; 1、开闭原则&#xff08;Open Close Principle&#xff09; 开闭原则的意思是&#xff1a;对扩…

苹果手机如何进行语音转文字的操作?

不知道大家有没有发现苹果手机中的很多应用与安卓版本的手机是不一样的&#xff0c;现在使用苹果手机的也越来越多了&#xff0c;今天小编给大家分享一种在苹果手机中如何进行语音转文字的操作。 第一步&#xff1a;首先我们需要在APP Store下载一款录音转文字助手。 第二步&am…

华为手机坏了数据怎么导出_手机视频怎么导出音频?

原标题&#xff1a;手机视频怎么导出音频&#xff1f; 手机上视频怎么提取音频&#xff0c;用什么软件提取视频原音&#xff1f;视频转mp3格式转换器&#xff0c;如何批量从视频里面提取音频&#xff1f;苹果怎么提取视频声音,怎么把视频转成mp3&#xff1f;我们在浏览视频的时…

怎么把录音导入库乐队_库乐队导入电脑版 苹果库乐队怎么导入歌

如何在库乐队制作音乐&#xff1f; 准备工具&#xff1a; 库乐队软件 具体步骤&#xff1a; 1、打开库乐队软件主页&#xff0c;在主页用手指左右滑动切换乐器&#xff0c;选择想要的乐器即可。2、选择好想要乐器后&#xff0c;在页面的上方会出现控制按钮&#xff0c;点击红色…

苹果库乐队怎么玩_苹果上的库乐队,极其强大精美的录音神器!

文 | 刘星文 ​ 库乐队是苹果设备上完全免费的音乐制作软件,既能制作音乐,剪辑音频,又能录音,对于内容创作者来说,非常有用。 我第一次使用库乐队的时候,就被这个软件精致的界面惊艳了。 录音 在做视频的时候,声音非常重要,很多短片画面拍的很好,可声音处理不怎么 好,…

XMind 2021mac苹果手机电脑端 专业版思维导图

xmind 2021中文版是目前互联网上一款最优秀最专业的思维导图软件&#xff0c;该软件可以将脑中的源源不断涌现的想法完美的展现出来&#xff0c;其思维导图与其他导图图表等更是简单易用&#xff0c;吸引着人们的眼球。 XMind思维导图&#xff0c;非常出名的思维导图、头脑风暴…

手机录音转文字怎么才快速?1分钟学会这2个方法,一键语音转文字

录音转文字是一种快速记录方式&#xff0c;使用这种方法能都非常快速的完成会议记录、演讲采访等工作。 而语音转文字用手机就能够轻松的完成&#xff0c;笔者在这分享2个非常简单的语音转文字方法&#xff0c;1分钟就能学会&#xff0c;让你每天准时下班不是梦&#xff01; …

苹果库乐队怎么玩_iPhone实用技巧:怎么将抖音上的背景音乐制作成手机铃声

抖音已经成为目前热门的APP,上面有很多优秀的音乐作品。当我们遇上了喜欢的音乐,怎么做成手机铃声呢? 需要安装的APP 1.抖音短视频APP 2.库乐队GarageBand APP(苹果自带,如果删除了,可重新在App Store里下载) 3.音乐剪辑APP(在App Store里下载) 详细步骤 1.在抖音APP里面找…

苹果手机左上角的数字怎么弄_手把手教你把抖音视频音乐设置为手机铃声。

2019年11月已经更新到新文章内&#xff1a; 和浦&#xff1a;iPhone手机设置铃声简易教程&#xff08;iOS12-iOS13&#xff09;​zhuanlan.zhihu.com 2019年4月10日更新&#xff1a; 随着ios12系统的到来&#xff0c;手机设置铃声更加便捷&#xff0c;接下来就来教大家更为简单…

手机便签如何导出和备份?

手机便签是很多网友日常生活和工作中用来记录日程、重要信息、琐碎事项的一种记事工具&#xff0c;用好便签工具&#xff0c;可以大大提高我们的办事效率&#xff0c;为生活和工作带来很多便利。有一些手机便签用户表示自己便签中保存的信息非常多&#xff0c;这时候就需要把便…