网易新闻首页iOS

//

//  ViewController.m

//  wyy

//

//  Copyright © 2016年 zm. All rights reserved.

//

#import "ViewController.h"

#import "ZMViewController.h"

#import "ZMLabel.h"

@interface ViewController ()<UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *titleScrllView;

@property (weak, nonatomic) IBOutlet UIScrollView *contentScrollview;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.automaticallyAdjustsScrollViewInsets = NO;

self.title = @"网易新闻";

[self setUpChildVC];

[self setUpTitle];

//默认选中第一页  调用此方法

[self scrollViewDidEndScrollingAnimation:self.contentScrollview];

}

//创建头部标题视图

- (void)setUpTitle{

CGFloat w = 100;

CGFloat y = 0;

CGFloat h = self.titleScrllView.frame.size.height;

for (int i = 0; i < 7; i++) {

ZMLabel *lable = [[ZMLabel alloc]initWithFrame:CGRectMake(i*w, y, w, h)];

lable.text = [self.childViewControllers[i] title];

//给lable添加手势

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];

[lable addGestureRecognizer:tap];

[self.titleScrllView addSubview:lable];

}

self.titleScrllView.contentSize = CGSizeMake(7*w, 0);

self.contentScrollview.contentSize = CGSizeMake(7*[UIScreen mainScreen].bounds.size.width, 0);

}

- (void)tap:(UITapGestureRecognizer *)tap{

NSInteger index = [self.titleScrllView.subviews indexOfObject:tap.view];

//通过手势设置内容滚动视图的偏移量

[self.contentScrollview setContentOffset:CGPointMake([UIScreen mainScreen].bounds.size.width * index, 0) animated:YES];

}

//当动画结束时调用此方法

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{

CGFloat w = scrollView.frame.size.width;

CGFloat h = scrollView.frame.size.height;

CGFloat offsetX = scrollView.contentOffset.x;

NSInteger index = offsetX/w;

ZMLabel *lab = self.titleScrllView.subviews[index];

CGFloat offsetx = lab.center.x - scrollView.frame.size.width*0.5;

//判断offsetx最大最小值两种情况

if (offsetx < 0) {

offsetx = 0;

}

if (offsetx > (self.titleScrllView.contentSize.width - scrollView.frame.size.width)) {

offsetx = self.titleScrllView.contentSize.width - scrollView.frame.size.width;

}

self.titleScrllView.contentOffset = CGPointMake(offsetx, 0);

UIViewController *zm = self.childViewControllers[index];

if ([zm isViewLoaded]) return;

zm.view.frame = CGRectMake(index *w, 0, w, h);

[self.contentScrollview addSubview:zm.view];

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

[self scrollViewDidEndScrollingAnimation:scrollView];

}

- (void)setUpChildVC{

ZMViewController *zm = [[ZMViewController alloc]init];

zm.title = @"新闻";

[self addChildViewController:zm];

ZMViewController *zm1 = [[ZMViewController alloc]init];

zm1.title = @"军事";

[self addChildViewController:zm1];

ZMViewController *zm2 = [[ZMViewController alloc]init];

zm2.title = @"政治";

[self addChildViewController:zm2];

ZMViewController *zm3 = [[ZMViewController alloc]init];

zm3.title = @"娱乐";

[self addChildViewController:zm3];

ZMViewController *zm4 = [[ZMViewController alloc]init];

zm4.title = @"社会";

[self addChildViewController:zm4];

ZMViewController *zm5 = [[ZMViewController alloc]init];

zm5.title = @"科技";

[self addChildViewController:zm5];

ZMViewController *zm6 = [[ZMViewController alloc]init];

zm6.title = @"啦啦";

[self addChildViewController:zm6];

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

CGFloat scale = scrollView.contentOffset.x/scrollView.frame.size.width;

NSInteger leftIndex = scale;

NSInteger rightIndex = scale+1;

if (scale < 0 || scale > self.titleScrllView.subviews.count-1) return;

CGFloat rightScale = scale - leftIndex;

CGFloat leftScale = 1-rightScale;

ZMLabel *leftLabel = self.titleScrllView.subviews[leftIndex];

ZMLabel *rightLabel = (rightIndex == self.titleScrllView.subviews.count)?nil:(self.titleScrllView.subviews[rightIndex]);

leftLabel.scale = leftScale;

rightLabel.scale = rightScale;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

// 自定义一个lable 继承于uilable

//

//  ZMLabel.m

//  wyy

//

//  Copyright © 2016年 zm. All rights reserved.

//

#import "ZMLabel.h"

@implementation ZMLabel

- (instancetype)initWithFrame:(CGRect)frame{

if (self =[super initWithFrame:frame]) {

self.textAlignment = NSTextAlignmentCenter;

self.userInteractionEnabled = YES;

self.textColor = [UIColor blackColor];

self.font = [UIFont systemFontOfSize:15];

}

return self;

}

- (void)setScale:(CGFloat)scale{

CGFloat transform = scale*0.3+1;

self.transform = CGAffineTransformMakeScale(transform, transform);

self.textColor = [UIColor colorWithRed:transform-1 green:0 blue:0 alpha:1];

}

@end

//创建控制器   这里可以为了简易就只创建一个控制器

//

//  ZMViewController.m

//  wyy

//

//  Copyright © 2016年 zm. All rights reserved.

//

#import "ZMViewController.h"

@interface ZMViewController ()

@end

@implementation ZMViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

#warning Incomplete implementation, return the number of sections

return 1;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

#warning Incomplete implementation, return the number of rows

return 50;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"forIndexPath:indexPath];

cell.textLabel.text = [NSString stringWithFormat:@"%@-%ld",self.title,indexPath.row];

return cell;

}

@end

时间: 2024-11-06 13:04:30

网易新闻首页iOS的相关文章

iOS 网易新闻首页进化版Demo(MXSegmentedPager),自带平行头部拉伸

网易新闻首页类似的界面简直太常见了,需求不同自然做出来的效果不同了,之前 用ScrollView写过一个控制器的封装,但是这里根本没有考虑到控制器的复用以及预加 载机制,如果没考虑复用的话当界面爆炸的时候估计你的App会很卡,例如半塘这样 的,我抓包发现貌似会预加载当前界面后三个界面,让用户滑动的时候能第一时间看到 数据,这样的机制蛮不错的,今天来介绍个能复用的框架,顺带介绍个另一个高斯模糊 的Catagory. 上图 这里的三个界面分别是最普通的控制器,webview以及双TableView

iOS实现网易新闻首页

主要就是这个页面,实现的主要功能有:1.点击上面的标题栏,下方的红色滚动条跟着到所点击的标题的下方;2中间的图片进行循环自动播放;3,点击下面的各项标签将所点击的标签添加到上面的标题栏,4当点击下面的标签在上面已经存在的时候将其从上面的标题栏移除 //viewDidLoad里面调用各种方法 - (void)viewDidLoad { // Do any additional setup after loading the view. self.titleArray = [NSMutableArr

网易新闻客户端iOS版本中新闻详情页(UIWebView)技术实现的分析探讨

本篇博客背景:1:本人是网易新闻app的忠实用户,大约每天有2~3个小时的使用时间.2:在如此频繁且长时间的使用过程中,几乎没有遇到过闪退的情况.不得不佩服人家优化的效果之好,也不得不感叹自己和大牛之间的差距之大.(不是做广告..是真爱..)3:一直都觉得网易新闻app的详情页做的特别好.前段时间,看到网上有不少人说网易新闻的详情页是用coreText(富文本)实现的.觉得很可笑,只是一个复制文字的功能,coreText便无法实现,便能排除coreText的可能性了.可是这些错误的言论在网上残留

IOS 类似于网易新闻首页新闻轮播的组件

一.需求分析 1.可横向循环滚动新闻图片 2.滚动到对应图片时显示新闻标题 3.每张新闻图片可点击 4.有pageControl提示 5.具有控件的扩展能力 二.设计实现 1.显示图片使用SDWebImage第三方库,可缓存图片.通过url异步加载图片 2.使用一个横向滚动的UITableView实现循环滚动 3.使用一个黑色半透明的背景.白色文字的UILabel显示标题 4.定义每个新闻的数据结构: /** @brief 默认使用本地地址,如果本地没有的话,使用网络图片 */ @interfa

网易新闻首页骨架(父子控制器实现)

一:父子控制器的应用:效果如图: 二:代码 1 #import "RHMainViewController.h" 2 #import "RHNewsTableViewController.h" 3 #import "RHLable.h" 4 static const CGFloat lableCount = 8; 5 static const CGFloat lableWidth = 80; 6 static const CGFloat labl

android 仿网易新闻首页框架

   首页布局: 1 SliddingMenu  +  ViewPagerIndicator 2 JSON 解析   FastJson 3 网络请求  Volley 4 sqlite 数据库简单封装,主要处理数据库版本升级问题 5 微信.微博 API 简单封装 6 代码混淆 ...... github: https://github.com/lesliebeijing/MyAndroidFramework.git

新版网易新闻客户端应用iOS源码

这是一个不错的iOS项目源码. 源码下载: http://code.662p.com/view/11510.html 演示图:   1.这次更新的亮点是添加了天气效果以后也可以用网易新闻看天气预报了,各种轻微的动画效果也没有放过. 2.新版的网易新闻,整改了首页UI,在底部加上了tabbar,因此多了很多页面这里也都编了,但是无法交互.毕竟东西太多了,我觉得能点击看到效果就算不能进一步深入,就一个壳子也比全空没有强是吧.. 3.主页-主页的下方加了tabbar,nav的两个按钮做了改变 4.详情

ActionBar+DrawerLayout实现网易新闻客户端首页

一.概述 随着android版本的不断的更新,google推出了越来越多的高级组件,采用这些官方组件我们可以方便的实现一些以前需要通过复杂编码或者使用第三方组件才能实现的效果,比如slidingmenu.sherlockactionbar等.在这里,我们通过使用android的官方组件ActionBar和DrawerLayout来实现网易新闻客户端首页的效果. 由于ActionBar和DrawerLayout都是后来推出的,如果需要兼容低版本必须在项目中添加v7支持库.具体如何添加支持库在此不做

ios 开发日记 13-剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍) 时间 2014-06-25 21:45:21  CSDN博客 原文  http://blog.csdn.net/hmt20130412/article/details/34523235 主题 网易iOS开发 本来只是打算介绍一下addChildViewController这个方法的,正好今天朋友去换工作面试问到网易新闻标签栏效果的实现,就结合它,用个小Demo实例介绍一下:(具体解释都写在了Demo里