曾经自学iOS开发一个月捣鼓出来一个简单的日程管理APP
https://itunes.apple.com/cn/app/lean/id903615490?mt=8,发布后几天鬼使神差地进入了App Store的推荐榜,获得了不少好评。本人算是多年的程序员,不具有代表性,只是回顾一下当时的学习经历,仅供参考。
入手第一台Mac后(至今后悔为神马快到晚年了才入手),就想着试水一把iOS开发,老婆说希望找个好用的Todo管理APP,心想就拿一个简单的Todo应用祭旗吧。
我上来看的是Standford的iOS教程,不太喜欢看视频,基本拖着过,主要看配套的讲义,视频主要目的当是练听力。当时还是Objective-C的版本,OC语言看的是官方文档,适应一下函数调用语法,Category、Protocol和Block几个概念要了解下,一两天就差不多了,开发过程中逐渐适应就顺手起来了。
这中间很大一部分时间,是在琢磨交互的设计,自己那段时间对交互设计也比较感兴趣。下载了大部分流行的Todo App来研究,重点考虑了自己的单手操作习惯,这也是后来能进APP Store推荐榜最主要的原因。
动手前,考虑过一个问题,就是StoryBoard,XIB和纯代码UI,选择哪种方式。看了几篇博文,也想到StoryBoard是苹果目前主推,就直接StoryBoard了。
从UITableView开始搞起,先整出来一个最简单的Todo的列表。发现没有checkbox控件,就搞了个基于图片的实现,学会了怎么基于StoryBoard来搞自定义的UTTabelViewCell。
接下来导航进入一个具体Todo需要Navigation Controller了,中间尝试了几种View Controller之间传数据和返回数据的几种方式。通过Delegate,通过Notification Center,写Segue相关的回调实现,在StoryBoard中设置,直接API调用,等等,多试几种方式以及相关的组合,基本对视图怎么跳过来跳过去的就了然于心了。然后学微信的样子搞了个Tab View Controller把几部分内容装起来。
花时间最多的是手势的操作,参考一些APP的之后,自己设计了一套操作手势。读官方文档,基本把UIGestureRecognizer搞明白了。然后上Github去找与我想法类似的库,没有特别符合要求的。后来自己参考了一个开源库代码,做了大量修改,实现了想要的手势操作。在过程中,对手势操作以及OC语言本身都掌握得比较熟练了。
数据存储是Core Data,看Standford教程,读文档,业务模型很简单,在StoryBoard中可视化地拉了两张表,基本就搞定了。
比较坑的是NSFetchedResultController,因为Todo的拖动、排序和编辑等操作和Table View默认的操作是完全不同的,各种错误,StackOverflow上的帖子翻遍了,搞了几天解决不了,遂放弃,自己封装了一层跟Table View交互的数据层。
尝试了加一些小的动画效果,比如Todo更新后闪动一下之类的,UIAnimation就够了。然后用NSUserDefault保存一些细节信息,这些信息对于交互上的一些小改进其实很有作用。然后是调整一下代码细节,优化一些View的显示。
然后做了代码重构,主要UITabelViewController,把MVC三部分代码做了更好得分离,也将一些公共抽象提取出来作为protocol,对代码设计基本就还算满意了。这段时间发现了
https://www.objc.io/这个网站,很有帮助。
之后就是找了一个好朋友帮我画了一些图,做了icon,基本就算完工了。
第一次提交被拒了,因为app网址随便填了个我们学校的网站,太随意了。第二次改成老婆的微博地址,然后就通过了。从开始学习iOS开始,刚好一个月时间左右。
上线后几天就是打开itunes connect之后,突然发现用户增加了近万,发现竟然进了推荐榜,最高的时候一度在效率榜排进几,貌似12306的APP就排在我的旁边,不过过了一周就没落了,哈哈。
后来其实花了不少时间,要做第二版。增加了提醒,云端同步,即时通信,好友管理等一堆功能,大部分都做好了,都还有一些需要完善的地方,一直没有提交。因为做其他事情没有时间,暂时搁置了,等哪天有时间有心情的时候,再重新捡起来把。
后来为了写一个iOS教程,就用Swift开始重写这个APP,不过也半途而废了,没完全写完,而且Swift语言也更新不少,内容也应该需要一些更新。越来越感概木有时间编程了。有兴趣的同学可以看看:
iOS应用开发 | 天码营已经写完的内容包括:
第1课
环境准备第2课
Swift基础第3课
Swift作业解析第4课
UITableViewController第5课
自定义的UITableViewCell第6课
MVC第7课
App的生命周期第8课
协议的使用第9课
理解可选类型第10课
UIViewController和UINavigationController第11课
Segue与数据传递第12课
Unwind Segue第13课
通知中心NSNotificationCenter第14课
日期选择器UIDatePicker第15课
XIB的使用第16课
可选(Optional)协议第17课
Core Data第18课
NSFetchedResultController第19课
细节优化的小技巧第20课
UITabBarController第21课
作业详解与回顾(1)第22课
作业详解与回顾(2)第23课
分页和UIActivityIndicatorView第24课
UIGestureRecognizer免责声明:本站所有内容及图片均采集来源于网络,并无商业使用,如若侵权请联系删除。
上一篇:北京市二级建造师执业资格注册程序简化了 审核后直接公告结果不珍惜**市场再次涨价,中方直接断绝合作:我国不是软柿子!
下一篇:IOS开发过程中会碰到的一些问题