您的位置:首页 > 移动开发 > Objective-C

第03天实战技术(02):网易新闻(设置标题)

2017-03-27 00:00 316 查看
#####一、网易新闻(设置标题)

设置标题




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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息