Object C 实现简单打卡APP

  • 实验环境
  • 实验目的
  • 实验内容
  • 实验结果展示
  • 页面介绍
  • 发现页面
  • 打卡页面
  • 登录页面
  • 功能展示
  • 实验代码分析
  • tabbar导航栏
  • 发现页面
  • 打卡页面
  • 登录页面


实验环境

  • Mac OS
  • Objective-C
  • Xcode

实验目的

  1. 学习使用纯代码进行UI布局
  2. 学习TableView,UICollectionView,UINavigationController,UICollectionController,
  3. UITabBarController等组件的使用,以及delegate和protocol的概念。
  4. 学习使用UIView动画及Core Animation动画

实验内容

实验结果展示

页面介绍

发现页面

ios打卡神器 iphone打卡_搜索

  • 该页面有一个搜索框,可以对发布的内容进行搜索
  • 背景颜色由黄色向粉红色渐变
打卡页面

ios打卡神器 iphone打卡_自定义_02

  • 该页面有四个标签和输入框用来记录时间、地点、景点和心得
  • 有一个添加配图的按钮和一个发布打卡信息的按钮
登录页面

ios打卡神器 iphone打卡_登录页面_03

  • 登录前该页面只有一个登录按钮,点击可以登录
  • 背景颜色由蓝色从四周向中心渐变为灰色

ios打卡神器 iphone打卡_ios打卡神器_04

  • 登录后会显示用户头像、用户信息、以及手机相关信息

功能展示

添加打卡信息

ios打卡神器 iphone打卡_搜索_05


如果在没有登录前就点击发布,会提示用户先登录,并且会跳转到登录页面

ios打卡神器 iphone打卡_登录页面_06


登录成功后,再发布会提示发布成功,并自动跳转到发现页面

ios打卡神器 iphone打卡_登录页面_07


添加图片最多只能有8张,到了8张再点击添加会出现提示框

ios打卡神器 iphone打卡_搜索_08

发布成功后,发现页面会按照时间排序显示出打卡的简略信息

ios打卡神器 iphone打卡_ios打卡神器_09


点击搜索后会出现相应的打卡信息

ios打卡神器 iphone打卡_自定义_10


点击信息后会进入详细页面查看打卡信息

ios打卡神器 iphone打卡_ios打卡神器_11

实验代码分析

tabbar导航栏

在AppDelegate文件中定义一个UITabBarController,然后创建三个自定义的页面,然后创建三个UINavigationController,把三个页面设置为根页面,然后将三个UINavigationController加到UITabBarController里面

ios打卡神器 iphone打卡_登录页面_12

发现页面

发现页面有一个UITableView,里面将UITableView的Header设置为我们创建的UISearchController,Header下面放创建的section,而section里放我们自定义的customCell,在自定的cell里,创建了三个UILabel,然后把打卡页面输入的信息传递过来并读取到UILabel的text中。

ios打卡神器 iphone打卡_搜索_13


用didSelectRowAtIndexPath方法实现点击后进入详情页面,先创建我们自定义的详情页面,DetailViewController,里面有三个UILabel和一个UIView,然后将单例模式传递的参数读取出来,分别赋值给标签和视图,这样就可以显示打卡详细信息

ios打卡神器 iphone打卡_登录页面_14


背景颜色的渐变用CAGradientLayer来渲染

ios打卡神器 iphone打卡_ios打卡神器_15

打卡页面

打卡页面创建5个UILabel、3个UITextField、1个UITextView、1个UIImageView和2个UIButton。将组件布局好以后,实现按钮的点击函数。添加图片的按钮使用到"DLPhotoPicker.h"库来实现打开相册并添加图片,然后使用"Masonry.h"库用自动布局来实现添加照片后按钮的位置,并且设置UIAlertController的弹窗提醒。发布按钮要用到单例模式来存储输入的内容以及添加的图片,"single.h"中包含datalist、imagelist和check_time分别用来存储信息、图片和渲染的时间(避免重复渲染而引起的错误)

ios打卡神器 iphone打卡_搜索_16

登录页面

未登录时的页面设置一个居中的圆形按钮,背景渐变用CAGradientLayer来渲染,点击按钮后会跳转到我们自定义的用户界面,里面包含1个UIView的头像,以及若干条UILabel

ios打卡神器 iphone打卡_搜索_17