这个阅读器是仿照网易云阅读做的,读者通过此应用可以阅读最新的新闻,或者自己订阅喜爱网站的RSS,获取最新的资讯,还可以在网上书城找到自己喜爱的书籍和漫画进行在线阅读,也可以下载到本地,以便平时的离线阅读。

主要功能:书籍的本地浏览。

订阅RSS源,获取最新资讯。

阅读新闻。

查看热门书籍。

功能介绍:整体框架

这四个界面都采用MVC的架构模式,用到了网络请求的AFNetWorking框架,并且自己进行了封装,方便自己使用。解析XML的KissXML框架,还用到下拉刷新框架EGORefreshTableHeaderView,工具类自己扩展了UIView,NSString ,使其方便布局和方便使用网络请求数据中时间的显示。

自定义标签控制器,将按钮后的视图进行封装,其继承于UIView,

- (id)initWithFrame:(CGRect)frame
imageName:(NSString *)name
title:(NSString *)title
isSelect:(BOOL)isSelect
{
self = [super initWithFrame:frame];
if (self) {
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake((frame.size.width-20)/2, 5, 20, 20)];
imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.image = [UIImage imageNamed:name];
[self addSubview:imgView];
//2.创建标题视图
CGFloat maxY = CGRectGetMaxY(imgView.frame);
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, maxY, frame.size.width, 20)];
titleLabel.text = title;
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textAlignment = NSTextAlignmentCenter;
if (isSelect) {
titleLabel.textColor = [UIColor redColor];
}
else
{
titleLabel.textColor = [UIColor grayColor];
}
titleLabel.font = [UIFont systemFontOfSize:11.0];
[self addSubview:titleLabel];
}
return self;
}

创建标签栏:

- (void)_createTabbarView
{
for (UIView *view in self.tabBar.subviews)
{
Class cls = NSClassFromString(@"UITabBarButton");
if ([view isKindOfClass:cls])
{
[view removeFromSuperview];
}
}
// 创建选中图片的视图
NSArray *imgsName_1 = @[@"home_shouye_normal",
@"home_faxian_normal",
@"home_yueduquan_normal",
@"home_info_normal"
];
NSArray *imgsName_2 = @[@"home_shouye_highLighted",
@"home_faxian_highLighted",
@"home_yueduquan_highLighted",
@"home_info_highLighted"
];
NSArray *titles = @[@"我的阅读",
@"发现",
@"阅读圈",
@"账号",
];
CGFloat itemWidth = kScreenWidth/4.0;
CGFloat itemheight = CGRectGetHeight(self.tabBar.frame);
_selectImgs_1 = [NSMutableArray array];
_selectImgs_2 = [NSMutableArray array];
for (int i = 0 ; i < 4; i++)
{
CGRect frame = CGRectMake(i*itemWidth, 0, itemWidth, itemheight);
NSString *imgName_1 = imgsName_1[i];
NSString *imgName_2 = imgsName_2[i];
NSString *title = titles[i];
SelectedView *selectView_1 = [[SelectedView alloc]initWithFrame:frame imageName:imgName_1 title:title isSelect:NO];
SelectedView *selectView_2 = [[SelectedView alloc]initWithFrame:frame imageName:imgName_2 title:title isSelect:YES];
selectView_2.hidden = YES;
[_selectImgs_1 addObject:selectView_1];
[_selectImgs_2 addObject:selectView_2];
[self.tabBar addSubview:selectView_1];
[self.tabBar addSubview:selectView_2];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
button.tag = i;
[button addTarget:self action:@selector(clickItem:) forControlEvents:UIControlEventTouchUpInside];
[self.tabBar addSubview:button];
}
[_selectImgs_1[0] setHidden:YES];
[_selectImgs_2[0] setHidden:NO];
}

用标签上Button的点击事件来控制button下面视图的隐藏与显示。

在“我的阅读”中,又分为“书架”,“订阅”,“杂志”,“推荐”,四个子模块。这四个子模块的切换可以通过点击导航栏的按钮或者直接向左向右来切换视图,切换过程中视图相连,能给用户良好的体验,其中具体的实现是在一个控制器中创建滑动视图,将四个子控制器放到这个控制器中,

左滑右滑时切换控制器:

- (void)setupTargetViewController:(UIViewController *)targetViewController withSlideType:(XHSlideType)slideType {
if (!targetViewController)
return;
[self addChildViewController:targetViewController];
CGRect targetViewFrame = targetViewController.view.frame;
switch (slideType) {
case XHSlideTypeLeft: {
targetViewFrame.origin.x = -CGRectGetWidth(self.view.bounds);
break;
}
case XHSlideTypeRight: {
targetViewFrame.origin.x = CGRectGetWidth(self.view.bounds) * 2;
break;
}
default:
break;
}
targetViewController.view.frame = targetViewFrame;
[self.view insertSubview:targetViewController.view atIndex:0];
[targetViewController didMoveToParentViewController:self];
}

在 “书架” 模块中,先做一个可以左右滑动的书架,这样可以放更多的书籍,书籍的内容和书籍封面都存在本地,点击书籍封面后进入到阅读书籍的界面,书籍的页数根据书籍的总长度除以每一页的长度计算,翻页时让文本内容偏移,在第一页向上翻页和最后一样向下翻页时给出提示。

“订阅”的模块显示用户订阅的RSS源,URL地址也存在本地,因为返回数据是XML格式,用到了KIssXML解析,可以做一个数据库来分类储存RSS源,便于用户查找和添加自己喜爱的网站。这个界面的标题在用户长按后可以自由调整,点击后弹出资讯的摘要列表,点击单元格后进入到相应的网页。

在“阅读圈”模块中,也分为两个界面:“关注”和“广场”,“广场”模块又分为“热门书籍”和“热门资讯”;

“关注”模块中加载的是最新的新闻,界面可以下拉刷新,头视图可以左右滑动,点击单元格跳转到对应的网页显示新闻详情。

“热门书籍”模块中加载的是最新的图书信息,点击单元格跳转到书籍的详情界面。

总结

这个项目还有很多未做完的模块,比如图书的下载,因为数据请求有问题,所以没有做,还有没有做数据库,导致订阅的界面没做,用户不能搜索订阅自己的资讯。在新闻的阅读界面也应该有评论和分享功能。

没有做完的原因主要是时间分配不合理,有些地方卡住了耗的时间太多。所以开始做的时候应该有个规划。

通过做这个项目,学到了很多东西,比如要善于利用第三方框架,这样可以事半功倍,还要多看别人写的代码,从中能得到一些启发。

ios开发 阅读器APP 的开发相关推荐

  1. 使用ComPDFKit PDF SDK 构建iOS PDF阅读器

    在当今以移动为先的世界中,为企业和开发人员创建一个iOS应用程序是必不可少的.随着对PDF文档处理需求的增加,使用ComPDFKit这个强大的PDF软件开发工具包(SDK)来构建iOS PDF阅读器和 ...

  2. node.js毕业设计安卓电子阅读器APP(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  3. 基于android的电子书阅读器app

    基于android的电子书阅读器app 基于Android平台的电子书阅读器的设计与实现主要通过Eclipse开发工具, Java语言与Sqlite数据库来完成的.本阅读器实现了本地阅读,手动翻页,书 ...

  4. Android手机有哪学好用的epub阅读器app

    小编作为一名合格的社畜,每天地铁单程通勤1h左右,为打发时间,经常选择安静地看电子书,避免刷短视频蚌埠住了,笑出声就真的社死了.也顺便当提高自己的吧.电子书的格式很多,小编接触最多就是Epub和mob ...

  5. 五分钟没有操作自动退出_智阅云自动阅读器app下载-智阅云自动阅读器app安卓版下载v1.0...

    智阅云自动阅读器是一款可以阅读赚钱的软件,这里有很多的文章,每天也都会有更新,在这里阅读文章赚钱还是比较靠谱的,大家可以放心. 智阅云自动阅读器app介绍 智阅云自动阅读器这里赚钱是比较简单的,还可以 ...

  6. 安卓手机小说阅读器_乐小说阅读器下载手机版-乐小说阅读器app下载安装

    乐小说阅读器app,一款非常不错的小说阅读器,这里的小说资源不仅非常的丰富,而且用户们可以免费任意阅读.小说内容非常的优质,阅读界面非常的清爽简洁,无任何广告弹出.喜欢看小说的就下载试试吧! 关于乐小 ...

  7. android 语音阅读软件,语音阅读器APP

    语音阅读器APP是一款非常好用的文字转语音阅读软件,不论身在哪里,不论方不方便看文本,该软件都可以帮你转换成语音读给你听,支持文章.小说等等内容的语音,非常方便,需要语音阅读器的可以来西西下载使用! ...

  8. 安卓手机小说阅读器_百万小说阅读器app免费版下载-百万小说阅读器app手机版下载v1.4...

    百万小说阅读器app这款小说中的资源堪称全网最齐全的且这里的内容十分丰富,能让你在这里阅读的时候有更多的免费资源的选择,而且这里还分有男女频道,让你在这里阅个痛快哦.还可以自动翻页,解放双手,提高用户 ...

  9. 安卓手机小说阅读器_书城小说阅读器app下载_书城小说阅读器手机版下载

    书城小说阅读器是一款智能小说阅读软件,可以智能搜索全网的小说,通过关键字搜索小说,一键轻松阅读小说,感兴趣的朋友快来下载书城小说阅读器吧. 书城小说阅读器app特色 1.内置智能查找.目录查找.关键字 ...

最新文章

  1. codeforces 700B Connecting Universities
  2. sqlnet.ora限制导致双机应用资源启动失败
  3. 微信三方授权域名问题
  4. SAP RM07扩展
  5. 使用DroidPlugin实践应用的插件化
  6. SQLLite (四):sqlite3_prepare_v2,sqlite3_step
  7. .ipynb转化为.py文件后批量删除一大堆#In[53]
  8. android环境搭建出错,androidstudio配置环境遇到的各种错误(持续更新中)
  9. Eclipse中Maven项目出现红色感叹号问题
  10. 【华为云技术分享】初识MySQL隔离级别
  11. 前端如何更精准的评估开发时间
  12. C++ Primer(第5版)
  13. mysql表内容_5、mysql表内容操作
  14. Apache Hadoop YARN
  15. 计算机设备统计报告,中国互联网络发展状况统计报告-中国科学院计算机网络信息中心.DOC...
  16. 中文简繁转换项目 OpenCC
  17. C语言如何清除控制台特定的一行,及'\b'字符的使用
  18. 【AI书籍】未来哪些职业会被人工智能所替代,听李开复老师怎么说
  19. 伦敦大学学院计算机专业申请条件,伦敦大学学院专业录取要求
  20. 计算机应用基础最要考点,北京自考计算机应用基础答题及时存盘

热门文章

  1. Aerospike使用介绍
  2. Aerospike 安装
  3. 用lavaan包进行验证性因子分析
  4. Data truncation: Truncated incorrect DOUBLE value错误的解决方案
  5. base64入流出流区别
  6. Java核心特性之反射机制
  7. syncnavigator百度云|syncnavigator使用说明|SyncNavigator注册机
  8. Matlab调用NI-DAQmx出现“错误使用 mex XXX skipping incompatible XXX searching for -lNIDAQmx“
  9. 微信公众号开发之获取oppenid和用户基本信息
  10. OpenGL学习-高级OpenGL-ComputeShader