行车服务app

By admin in 亚洲必赢app在哪下载 on 2018年12月30日
  • 如今支付了一个行车服务项目,iOS客户端应用Objective-C编写,
    后端接纳PHP搭建,部署在阿里云,操作系统为Linux CentOS 7.3,数据库MySQL,服务器为Apache,是相比基础的LAMP组合。
  • iOS端代码部分我会讲述全体的开发思路,一些诙谐的法力点也会详细说说。
  • 后端代码相比较简单,想要自己尝试开发API的iOS开发者可以参照。
  • 发这篇文的严重性目的是对如今的开销做一个完好回顾,同时希望对有需要的同桌提供到一些帮扶,有成百上千不尽合理和周到的地点,也呼吁各位同学不吝赐教,感谢大家!

第一上总体的效应图:

亚洲必赢app在哪下载 1

show.gif

在POI检索结果页面,地图控件呈现为空白,是因为模拟器运行的案由,真机效果甚佳

这里是 iOS项目地址后端项目地址 。假设有辅助,希望点一下Star以示鼓励,感谢~

此间是后端代码简析的篇章后端代码简析

「Tips」:对于发现代码运行报错的同窗,项目利用CocoaPods展开第三方库的并轨。在此以前为了便利自己对Pods文本夹做了ignore操作。刚刚已经更新,我们可以直接打开后缀为xcworkspace的体系文件运行。可是这样Github地点的品类体积会相比较大。

粗略介绍:项目UI全部尽量保持了饿了么的藏蓝色风格,其中一些页面参考了高德地图饿了么Max+的统筹风格。

系列功用点

  • 账户、用户资料管理
  • 参照饿了么UI的永恒、天气模块
  • 基于高德地图API开发的POI摸索,同时界面也投入了一部分和高德地图app类似的特色
  • 自定义交互逻辑的预约及结果通告效率
  • 简单易行参照Max+app的音讯模块
  • 用户历史足迹、历史事件维护

品类应用到的API及第三方库

  • 高德地图API
  • 和风天气API
  • 自己搭建的后端相关接口
  • AFNetworking 3.0
  • SDWebImage
  • MBProgressHUD
  • 项目内的Icon汪洋采纳Alibaba的iconfont图标,极力推荐

类别涉及的技术点

  • 高德地图API的有关应用。包括地图POI检索导航等功能。
  • GCD的接纳示例。包括耗时操作的后台执行、UI更新相关操作等。
  • NSUserDefaults保安账户信息。这里是为使用方便,仅供参考。
  • Core Animation的使用。由于TableView加载时拔取HUD的用户体验不是很友善,我要好包装了Loading页面。

支付思路

  • #### 登录注册页面

亚洲必赢app在哪下载 2

IMG_2008.PNG

  • 类型伊始化时使用Tabbar VC作为rootController,即使这时不曾账户音讯,则采纳模态弹出形式弹出登录页面。

  • 这一部分比较简单,客户端会先对用户输入的音讯举办简短的合法判断,然后调用登录接口。

  • 有一些有关TextField的点击空白和Return回收键盘以及呼出键盘时控件移位避免遮挡的代码可以小心一下。

  • Tabbar VC起初化时,第一个tab栏的VC会进展固化操作,假诺此时为已报到情形,则一向调用发送历史足迹的接口。在未登录情状下,用户点击登录按钮,登录成功时,会向第一个tab栏VC发送一个调用历史足迹接口的通知

  • #### 主界面(tabbar栏首页)

亚洲必赢app在哪下载 3

IMG_2009.PNG

亚洲必赢app在哪下载 4

IMG_2010.PNG

  • ##### 地理地点和气候部分。

    • 这有些是独立包装的View,UI参考了饿了么。地理地方和通知列表按钮的点击事件拔取代理交由近来VC实现。
    • 由于模拟器定位赢得的坐标不可以利用高德地图的境内API,我对运作条件做了弹指间判定,如倘若模拟器运行,则设置了默认坐标,对应地点大概是北京市海淀区北京理工大学
    • 最近VC加载过程中,开启定位,在地理地方反编码的中标回调中调用天气信息的接口。注意地理地方和气候音信的UI更新放在主线程执行。
    • 点击地理地方的文字时,会模态弹出重新定位的界面,重新定位按钮的点击事件拔取代理交由主界面VC实现,避免在此界面再一次实例化定位有关的目的。
  • ##### 功能栏

    • 使用UICollectionView展示。各个CellIcon行使Alibaba的iconfont图标,将以往的图片素材转为字体来使用,对于素材整理、高清保真、代码方便来说有极大的效率提升。在Web移动客户端开发世界曾经异常广泛地在运用。
  • ##### 某一效率VC

亚洲必赢app在哪下载 5

IMG_2011.PNG

  • 这部分UI参考了高德地图附近界面UI以及一些特性。导航栏隐去,最下面是一个地图控件,以及透明的回到按钮。下边是POI信息的tableview。在tableview向下滑动时,地图隐去,tableviewframe进化,导航栏出现。向上滑动到顶部时,tableview下移,地图现身,导航栏隐去。
  • tableview滑动时特性的实现:通过scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate代理方法,判断滑动的倾向,从而对tableviewframe以及导航栏等因素进行操作。
    代码如下:

//判断滑动手势方向,决定tableview的frame改变
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
  CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];
  if (translation.y>0) {
      NSLog(@"ssssss");
      {
          NSIndexPath *dic = self.poiList.indexPathsForVisibleRows.firstObject;
          if (self.poiList.frame.origin.y == 64 && dic.row == 0){
              [UIView animateWithDuration:0.2 animations:^{

                  NSLog(@"visible:::%@",dic);
                  showMap = YES;
                  self.navigationController.navigationBar.hidden = YES;
                  self.poiList.frame = listFrame;
              }];
          }
      }
  }else if(translation.y<0){
      NSLog(@"tttt");
      if (self.poiList.frame.origin.y == 300){
          [UIView animateWithDuration:0.2 animations:^{
              showMap = NO;
              self.navigationController.navigationBar.hidden = NO;
              self.poiList.frame = listFullFrame;
          }];
      }
  }
}
  • 在界面加载时,使用了自己包裹的loading页面:

    亚洲必赢app在哪下载 6

    IMG_2018.PNG

    • 在页面view加载的最最先,将loading页的view插足到眼前VC的view中。在页面数据加载成功的回调中,调用tableviewreload方法,而后将loading页移除。
    • loading页使用basicAnimation创造了概括的呼吸动画,keyPath为logo图标的透明度。
  • 第一个cell的POI地方默认同预约,展现预约图标,点击进入预约界面。

    亚洲必赢app在哪下载 7

    IMG_2012.PNG

    • 本条片段的和后端的互相逻辑是和谐定义的。一般的约定过程是预约请求发送成功后,一段时间内由店家举办同意或拒绝操作,而后客户端收到结果回执。由于本项目简单模拟此过程,均选拔http情商举办通信。所以我的兑现形式是后端收到预约请求后,直接使用擅自数形式模拟店家的收受或拒绝。一定时间后,客户端调用结果查询的接口来收获预约结果。
    • 实现形式为,点击预定按钮,若预约接口调用成功,按钮字样变为预约中,钟表icon开首转动,并且按钮变为不可点击状态。与此同时,使用performSelector办法延时调用获取预约结果的接口。在此网络请求的打响回调中,向主界面发送通知,而后主界面通知按钮右边呈现通告数量的新民主主义革命图标。如图。
    • 这里通告列表的数额是存在UserDefaults中的,不同装备之间不能共同。其中涉及到有的userDefaults中数量要求的学问,具体可以参见代码。这里是因为要求是临时想出,假诺正常实现情势需要支付获取通知数据的接口。我为了节省开销时间所以使用这种情势来效仿实现了。这多少个地方在后来可以系数~

      亚洲必赢app在哪下载 8

      IMG_2013.PNG

  • #### 资讯Tab栏

亚洲必赢app在哪下载 9

IMG_2014.PNG

  • 此间没有消费过多的生气。数据预置了微博消息有关数据。界面UI参考了我不时使用的Max+iOS客户端的资讯功用。首个Cell以全图为背景,可以用来卓绝呈现首要内容。

  • 情报详情页是一个简练的webView。同样应用了上下一心包装的Loading图。移除时机就简单放在了webViewfinishLoad回调方法中。其实对于Webview确实加载成功时机的判定还有好多得以聊的事物,日后补偿。

  • #### 设置页面

亚洲必赢app在哪下载 10

IMG_2015.PNG

  • 这几个页面不问可知是采用六个sectiontableview实现。在页面的viewWillAppear办法中,需要调用获取缓存数据大小的方法,单独更新清除缓存cell的始末。因为在历次切换tab的过程中,缓存数据都有可能暴发变化。

  • ##### 个人音信

    • 页面依旧采纳tableview心想事成。在音讯编辑页面,仿照了微信音信变更页面的逻辑。页面出现时,登时弹出键盘。关于使textField在页面加载成功时即成为第一响应者的题目,需要重写- (BOOL)becomeFirstResponder方法。代码如下:

    - (BOOL)becomeFirstResponder
    

{
[super becomeFirstResponder];
return [self.textInput becomeFirstResponder];
}
“`

亚洲必赢app在哪下载 11

IMG_2016.PNG

  • ##### 历史足迹、历史预定、积分音讯

亚洲必赢app在哪下载 12

IMG_2017.PNG

亚洲必赢app在哪下载 13

IMG_2019.PNG


这部分也还是采纳了包装的loading页面。即使数量条目为空,则不显得tableview亚洲必赢app在哪下载,,提示暂无相关信息,如图。

  • ##### 清除缓存

    • 此地实在只利用了SDImageCache的相关方法。大家还足以去掉本app的缓存数据所在目录来达到确实祛除缓存的目标,日后议论。
    • 缓存数据获取的起来单位是B,大家需要除以10241次、2次来判定当前数量是在KB级别仍旧MB级别,并作正确显示。
  • ##### 退出登录

    • 点击此按钮,清除userDefaults中相关数据,然后模态弹出登录页面。
    • 此处可以小心的某些是,大家在模态弹出登陆页,并且再一次登录之后,界面是在脱离登录往日的页面的,也就是tab栏的第两个页面。假如想要再一次登录之后,界面出现在tab栏的首页,大家可以在模态弹出登录页的成功回调中,对眼前tabVC的selected index开展设置。代码如下:

    DELoginViewController *loginVC = [[DELoginViewController alloc] init];
            [self presentViewController:loginVC animated:YES completion:^{
                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                    // 耗时的操作
                    dispatch_async(dispatch_get_main_queue(), ^{
                        // 更新界面
                        AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
                        appDelegate.tabbarVC.selectedIndex = 0;
                    });
                });
            }];
    

代码的最重要开支思路基本描述完,具体的细节我们可以和本人连续交换~项目中有广大不尽合理的贯彻模式,小片段是考虑到时刻因素。欢迎我们展开座谈、指教。
有连带的题材,欢迎大家展开留言。项目中使用的自有接口,部署在我的阿里云服务器中,可外网访问。请求大家合理施用。

后端项目数据库相关的sql代码,我已上传至后端项目

一经大家有趣味,未来我可以再讲述一下server端的代码,当然,后端我也是初大方的水平,仅供想要入门的同桌参考。

本人的私家博客网站地址:
哈尔(Hal)o的私房博客
,欢迎我们访问。

代码已开源,地址在篇章首部。假设点一下star,我真的会万分感谢~
halo

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2018 亚洲必赢app官方下载 版权所有