第03天实战技术(02):网易新闻(设置标题)
2017-03-27 00:00
316 查看
#####一、网易新闻(设置标题)
1.添加所有子控制器
2.添加所有标题 ==> 由多少个子控制器决定
3.设置scrollview的滚动内容,和隐藏水平滚动条
code
设置标题
1.添加所有子控制器
#pragma mark 添加所有子控制器 - (void)setUpAllChildController { // 头条 TopLineViewController *tVC = [[TopLineViewController alloc]init]; tVC.title = @"头条"; [self addChildViewController:tVC]; // 热点 HotViewController *hVC = [[HotViewController alloc]init]; hVC.title = @"热点"; [self addChildViewController:hVC]; // 视频 VideoViewController *vVC = [[VideoViewController alloc]init]; vVC.title = @"视频"; [self addChildViewController:vVC]; // 社会 SocietyViewController *sVC = [[SocietyViewController alloc]init]; sVC.title = @"社会"; [self addChildViewController:sVC]; // 订阅 ReaderViewController *rVC = [[ReaderViewController alloc]init]; rVC.title = @"订阅"; [self addChildViewController:rVC]; // 科技 ScienceViewController *scVC = [[ScienceViewController alloc]init]; scVC.title = @"科技"; [self addChildViewController:scVC]; }
2.添加所有标题 ==> 由多少个子控制器决定
#pragma mark 设置所有标题 - (void)setUpAllTitle { #warning 已经 把内容展示上去 ==> 展示的效果 是不是我们想要的(细节调整) /** 1. 标题颜色 为黑色 2. 需要让scrollView 可以滚动 */ // 添加所有的标题按钮 NSInteger count = self.childViewControllers.count; // 获取所有的子控制器的数量 CGFloat btnW = 100; CGFloat btnH = self.titleScrollView.bounds.size.height; CGFloat btnX = 0; CGFloat btnY = 0; for (int i = 0; i< count; i++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; // 获取对应的子控制器 UIViewController *vc = self.childViewControllers[i]; [btn setTitle:vc.title forState:UIControlStateNormal]; btnX = i * btnW ; // 等于 i * 一个按钮的宽度 // 0 * 100 = 0 // 1 * 100 = 100 btn.frame = CGRectMake(btnX, btnY, btnW, btnH); // 设置尺寸 (宽高一样) [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.titleScrollView addSubview:btn]; } }
3.设置scrollview的滚动内容,和隐藏水平滚动条
// 设置scroll的滚动范围 self.titleScrollView.contentSize = CGSizeMake(count * btnW, 0); // 隐藏滚动条 self.titleScrollView.showsHorizontalScrollIndicator = NO; // 水平方向
code
#import "ViewController.h"
#import "TopLineViewController.h" // 头条
#import "HotViewController.h" // 热点
#import "VideoViewController.h" // 视频
#import "SocietyViewController.h" // 社会
#import "ReaderViewController.h" // 订阅
#import "ScienceViewController.h" // 科技
@interface ViewController ()
@property (nonatomic) UIScrollView *titleScrollView;
@property (nonatomic) UIScrollView *contentScrollView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 导航控制器由栈点设计 当前的导航控制器的栈点是 navigationItem
self.navigationItem.title = @"网易新闻";
// 先有思路再去写代码
// 每一个点 抽取一个方法 : 写完方法名里面调用 (这样不会出现没有调用,导致没有效果)
// 1.添加标题滚动视图
[self setUpTitleScrollView];
// 2.添加内容滚动视图
[self setUpContentScrollView];
// 3.添加所有子控制器
[self setUpAllChildController];
// 3.添加所有标题 ==> 由多少个子控制器决定
// 4.设置标题[self setUpAllTitle];
}
#pragma mark 添加标题滚动视图
- (void)setUpTitleScrollView
{
UIScrollView *titleScrollView = [[UIScrollView alloc]init];
// 最好判断一下 有没有导航条 再来计算frame
CGFloat y = self.navigationController.navigationBarHidden ? 20 : 64; // 如果等于yes 说明隐藏了
titleScrollView.frame = CGRectMake(0, y, self.view.frame.size.width, 44);
titleScrollView.backgroundColor = [UIColor redColor];
[self.view addSubview:titleScrollView];
_titleScrollView = titleScrollView; // 内容视图需要获取 标题视图的最大y值 ,所以我们需要提供一个属性
}
#pragma mark 添加内容滚动视图
- (void)setUpContentScrollView
{
UIScrollView *contentScrollView = [[UIScrollView alloc]init];
// 最好判断一下 有没有导航条 再来计算frame
CGFloat y = CGRectGetMaxY(self.titleScrollView.frame); // 获取标题滚动视图的最大y值
contentScrollView.frame = CGRectMake(0, y, self.view.frame.size.width, self.view.frame.size.height - y);
contentScrollView.backgroundColor = [UIColor greenColor];
[self.view addSubview:contentScrollView];
_contentScrollView = contentScrollView;
}
#pragma mark 添加所有子控制器 - (void)setUpAllChildController { // 头条 TopLineViewController *tVC = [[TopLineViewController alloc]init]; tVC.title = @"头条"; [self addChildViewController:tVC]; // 热点 HotViewController *hVC = [[HotViewController alloc]init]; hVC.title = @"热点"; [self addChildViewController:hVC]; // 视频 VideoViewController *vVC = [[VideoViewController alloc]init]; vVC.title = @"视频"; [self addChildViewController:vVC]; // 社会 SocietyViewController *sVC = [[SocietyViewController alloc]init]; sVC.title = @"社会"; [self addChildViewController:sVC]; // 订阅 ReaderViewController *rVC = [[ReaderViewController alloc]init]; rVC.title = @"订阅"; [self addChildViewController:rVC]; // 科技 ScienceViewController *scVC = [[ScienceViewController alloc]init]; scVC.title = @"科技"; [self addChildViewController:scVC]; }#pragma mark 设置所有标题
- (void)setUpAllTitle
{
#warning 已经 把内容展示上去 ==> 展示的效果 是不是我们想要的(细节调整)
/**
1. 标题颜色 为黑色
2. 需要让scrollView 可以滚动
*/
// 添加所有的标题按钮
NSInteger count = self.childViewControllers.count; // 获取所有的子控制器的数量
CGFloat btnW = 100;
CGFloat btnH = self.titleScrollView.bounds.size.height;
CGFloat btnX = 0;
CGFloat btnY = 0;
for (int i = 0; i< count; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
// 获取对应的子控制器
UIViewController *vc = self.childViewControllers[i];
[btn setTitle:vc.title forState:UIControlStateNormal];
btnX = i * btnW ; // 等于 i * 一个按钮的宽度
// 0 * 100 = 0
// 1 * 100 = 100
btn.frame = CGRectMake(btnX, btnY, btnW, btnH); // 设置尺寸 (宽高一样)
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.titleScrollView addSubview:btn];
}
// 设置scroll的滚动范围 self.titleScrollView.contentSize = CGSizeMake(count * btnW, 0); // 隐藏滚动条 self.titleScrollView.showsHorizontalScrollIndicator = NO; // 水平方向}
@end
相关文章推荐
- 第03天实战技术(08):网易新闻(标题文字渐变)
- 第03天实战技术(06):网易新闻(标题居中处理)
- 第03天实战技术(07):网易新闻(标题文字缩放)
- 第03天实战技术(03):网易新闻(处理标题按钮点击)
- 第03天实战技术(01):网易新闻(搭建界面)
- 第03天实战技术(05):网易新闻(监听内容滚动)
- 第03天实战技术(09):网易新闻(抽取网易新闻)
- 第02天实战技术(02):KVC字典转模型
- 第04天实战技术(02):block开发使用场景(代理传值)
- 最纯粹的直播技术实战02-Camera的处理以及推流
- 第03天实战技术(11):Size和center
- 第03天实战技术(12):通知补充
- 第03天实战技术(10):UIScrollView的自动布局
- 第03天实战技术(15):assign和weak的区别
- 第03天实战技术(04):scrollView额外滚动区域
- 第03天实战技术(17):UIScrollView底层实现
- 第03天实战技术(13):通知多线程使用
- 最纯粹的直播技术实战02-Camera的处理以及推流
- 第03天实战技术(16):Bounds和Frame简介
- 第01天实战技术(02): 关键字注意点