看了网上的一些教程,有开发一款简单应用的想法,其中一些教程提供了很好的出发点,可以在其基础上延伸,需要的是各方面的技能。以下是最近两天开发的过程回顾。
计划:用swift语言开发todo应用,使用Xcode自带控件,不采用第三方资源。
应用使用过程逻辑:
1,通过文字输入来新建任务
2,通过控件标记任务
3,通过列表查看全部任务
4,删除任务
应用界面设计:
1,首页为列表,用来在开启应用时查看所有任务
2,在首页通过点击新建任务来开启子页面
3,子页面包含文字输入框,标记任务控件,确认新建任务按钮
应用图标设计:
Pages制图,导出图片后,使用开源工具一键生成
任务以列表的形式呈现给用户,所以在ViewController里采用UITableView,同时使用向左滑动的手势来删除任务;
点击新建任务开启子页面可以使用UIBarButtonItem,通过设置属性改为系统提供的Add,显示为 + ,省去了按钮设计;
子页面文字输入框使用TextField,位置在最上方,方便页面切换后点击文本框开始编辑文字;
文本输入框下面布置任务标记控件,考虑分为重要和不重要两种,可以使用UISwitch,在标记重要任务时,通过代码给任务增加标记;
UISwitch占据较小的面积,可以放在TextField同一行,考虑同时搭配文字提示来说明是否将任务标记,文本框文字数量,不放在同一行更合适,于是添加UILabel作为文字提示;
最后,确定任务时使用UIButton,同时切换回首页。
代码:
首页通过UITableView来显示数据,首先添加UITableViewDelegate, UITableViewDataSource
然后在 viewDidLoad里面添加
tableView.dataSource = self
tableView.delegate = self
首页需要获取数据和刷新数据,添加getData
和reloadData
来实现;
数据展示三连:有啥?咋摆?什么变了?
其中在cellForRowAt
里使用if else
语句来区分标记的任务是否重要。
子页面属于常规操作,拖拽控件们挨个命名,添加任务的按钮相对复杂,需要处理确认任务添加完成,还要切换回首页,任务添加完成为保存文字,确认标记,保存标记。
子页面的下半部分留给了输入文本时弹出的键盘,可以使用手势轻点空白处来收回键盘,考虑未来添加控件UIDatePicker提供设置任务提醒时间的功能,同时改变现有添加任务的按钮位置。
应用使用Core Data来保存数据,具体为每一项任务的文字和标记,在Attibute中分别为String和Boolean。
由于应用非常简单,可以顺便做一点细节来学习应用开发的其他知识,比如本地化。
在开发的时候默认是英语的环境,可以在Xcode里进行添加中文环境,选择项目名称在Info里面有Localizations,添加后可以看到选择哪些文件来本地化。
两个storyboard本地化后会增加一个strings文件,内容很简洁,可以看到对应的控件的id,通过id可以查到控件。
应用名称也可以本地化,在Info.plist添加Application has localized display name
Boolean设置为YES,新建strings,命名为InfoPlist,在里面写一行CFBundleDisplayName ="应用名";
即可。
提交审核
坑一:应用快照
使用模拟器截图时,要注意截图的分辨率,默认⌘+S生成截图放在桌面,截图默认会显示分辨率,按照要求选择对应的分辨率。
坑二:证书
证书过期无效,证书没过期无效等等等等。
坑三:网络
在Xcode内提交应用时可能会出现中断的情况。
坑四:应用体积过大
优化吧,没别的办法。
总结,swift初学者在很少量的代码下可以实现很简单的应用,并一路走到应用上架等待审核的环节,整个过程中遇到的问题都可以在网上查到解决的办法,尽量用英语查询,当前swift版本为4,可以获得全世界开发者分享的最新信息。