Object C 实现简单打卡APP
实验环境
- Mac OS
- Objective-C
- Xcode
实验目的
- 学习使用纯代码进行UI布局
- 学习TableView,UICollectionView,UINavigationController,UICollectionController,
- UITabBarController等组件的使用,以及delegate和protocol的概念。
- 学习使用UIView动画及Core Animation动画
实验内容
实验结果展示
页面介绍
发现页面
- 该页面有一个搜索框,可以对发布的内容进行搜索
- 背景颜色由黄色向粉红色渐变
打卡页面
- 该页面有四个标签和输入框用来记录时间、地点、景点和心得
- 有一个添加配图的按钮和一个发布打卡信息的按钮
登录页面
- 登录前该页面只有一个登录按钮,点击可以登录
- 背景颜色由蓝色从四周向中心渐变为灰色
- 登录后会显示用户头像、用户信息、以及手机相关信息
功能展示
添加打卡信息
如果在没有登录前就点击发布,会提示用户先登录,并且会跳转到登录页面
登录成功后,再发布会提示发布成功,并自动跳转到发现页面
添加图片最多只能有8张,到了8张再点击添加会出现提示框
发布成功后,发现页面会按照时间排序显示出打卡的简略信息
点击搜索后会出现相应的打卡信息
点击信息后会进入详细页面查看打卡信息
实验代码分析
tabbar导航栏
在AppDelegate文件中定义一个UITabBarController,然后创建三个自定义的页面,然后创建三个UINavigationController,把三个页面设置为根页面,然后将三个UINavigationController加到UITabBarController里面
发现页面
发现页面有一个UITableView,里面将UITableView的Header设置为我们创建的UISearchController,Header下面放创建的section,而section里放我们自定义的customCell,在自定的cell里,创建了三个UILabel,然后把打卡页面输入的信息传递过来并读取到UILabel的text中。
用didSelectRowAtIndexPath方法实现点击后进入详情页面,先创建我们自定义的详情页面,DetailViewController,里面有三个UILabel和一个UIView,然后将单例模式传递的参数读取出来,分别赋值给标签和视图,这样就可以显示打卡详细信息
背景颜色的渐变用CAGradientLayer来渲染
打卡页面
打卡页面创建5个UILabel、3个UITextField、1个UITextView、1个UIImageView和2个UIButton。将组件布局好以后,实现按钮的点击函数。添加图片的按钮使用到"DLPhotoPicker.h"库来实现打开相册并添加图片,然后使用"Masonry.h"库用自动布局来实现添加照片后按钮的位置,并且设置UIAlertController的弹窗提醒。发布按钮要用到单例模式来存储输入的内容以及添加的图片,"single.h"中包含datalist、imagelist和check_time分别用来存储信息、图片和渲染的时间(避免重复渲染而引起的错误)
登录页面
未登录时的页面设置一个居中的圆形按钮,背景渐变用CAGradientLayer来渲染,点击按钮后会跳转到我们自定义的用户界面,里面包含1个UIView的头像,以及若干条UILabel