UberDemo项目总结

作者: 辉蛋儿 | 来源:发表于2016-03-26 12:55 被阅读261次

Uber打车app项目的功能模块主要有一下几点Demo

1 首页启动播放AV效果
2 注册流程
2.1 选取国家,回调国家编号,保存在CoreData持久化
2.2 上传用户头像,用户信息
2.3 手机端发送验证码
2.4 完成注册上传用户信息到Bmob上面
2.5 绑定银行卡,支付宝,银联,京东等信息(继承sdk)
3 登陆流程
4 主页用户定位
5 侧边栏效果实现
6 主页用户信息设置
7 集成百度sdk
8 实时更新当前车辆的位置信息
9 付款流程
10 搜索目标位置

效果图如下图所示:

  1. 首页启动效果
Uber1.gif

在整个过程中处理bug的相关日志

1 开发自定义的xib的时候需要先关联class,但是xib关联方式和storyboard的关联方式是不一样的。

屏幕快照 2016-03-11 10.49.47.png
2 还有个问题就是在实例化一个view的时候,出现了这样的错误。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "GuidPage" nib but the view outlet was not set
然后按照视频教程的操作说明看了下,发现了没有关联Reference Outlet和view之间的关联。
屏幕快照 2016-03-11 11.13.37.png
3 在跟着视频做视图的时候,有一个地方不注意的话就会很麻烦,在做uberDemo加载logo的视图中,由于没有将View的底色调制黑色以至于显示出来的logo都是以白色为底色。这个问题困扰了我一个下午,在晚上的时候终于搞出来了。
4 还有一个地方就是在加载图层layer是有两个方法:let playerLayer = AVPlayerLayer(player: player)let playerLayer = AVPlayerLayer(layer: player)进过查看底层代码发现根本就没有后者这个方法体。
5 对代理模型的理解还是不够,导致了每次使用代理模型的时候总是需要上网查看相关资料,
谁要传值谁建代理,接收方实现该代理,并且接收方还要绑定该代理。
解决办法:

BController要传值给AController,
首先,在BController类中建立protocol BDelegate,并且发布这个代理(也就是定义这么一个变量)var delegate: SelectCountryDelegate?
其次,要在接收方AController中实现该代理和绑定该代理。从哪个方法跳转到BController中

  class RegisterPage: FxBasePage,SelectCountryDelegate{
     
      @IBAction func doSelectCountry(){
        let page = SelectCountry()
        page.delegate = self
        let navPage = UINavigationController(rootViewController: page)
        self.presentViewController(navPage, animated: true, completion: nil)
    }

最后,就是传值操作了,在BController中

        let country = datas[indexPath.row]
        print(FxString.getTheLocalAreaCode(country.code))
        delegate!.setCountryCodeAndFlag(FxString.getTheLocalAreaCode(country.code), flag: "\(country.code).png")

6 在集成银联sdk的时候,出现了问题。问题在于没有按照人家给的sdk部署文档去做,少配置了一个参数导致的。
在工程的Build Settings中找到Other Linker Flags中添加-ObjC宏
7 上午来单位后仔细阅读了银联的SDK配置文件,将周日的那个bug给搞定了。原因就是因为没有配置Other Linker Flags在工程的Build Settings中找到Other Linker Flags中添加-ObjC宏
8 侧边栏的滑动效果需要使用第三方的控件来进行处理。这里我们可以去github上面找一些第三方的控件来满足我们的要求。KGFloatingDrawer
其中可能有一些地方是不太满足我们的要求,因此需要我们对第三方控件进行调整。

public class KGDrawerSpringAnimator: NSObject {
    //缩放比例
    let kKGCenterViewDestinationScale:CGFloat = 1.0

9 处理tableViewCell的cell时候,需要改变cell的背景色的问题:

        cell.contentView.backgroundColor = UIColor.blackColor()
        cell.textLabel?.text = payInfo.name
        cell.textLabel?.textColor = UIColor.whiteColor()
        cell.textLabel?.backgroundColor = UIColor.blackColor()
        cell.imageView?.image = UIImage(named: payInfo.icon)
        cell.accessoryType = .None

10 还有一个问题就是imageView在建立约束的时候,不能够针对其所在容器的尺寸进行建立,这个问题我猜有可能是imageView不是一个view的缘故,针对这个问题,需要在创建一个view底层+imageView+textfield。


屏幕快照 2016-03-16 10.37.05.png

11 这个问题处理完以后,还有一个问题就是因为有多个输入框的自动布局的bug,没有办法让他们根据屏幕的宽度自动调整他们之间的间距,这里想到了一个办法,就是将这个4个view底层在嵌入到一个大的view中去,这个可是让4个view以这个大的view标准,然后这个大的view来去自适应我们的屏幕宽度。
12 自定义ScrollView的概念,加入百度地图SDK
13 利用Cocoapods加入第三方控件百度地图SDK,Alamofire
14 在使用百度地图SDK的时候,没有问题,但是引入时系统就报错了

Release-iphonesimulator/Pods.framework/Pods(Pods_vers.o)) was built for newer iOS version (8.4) than being linked (8.0)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_BMKMapManager", referenced from:
      Uber.AppDelegate.addMapPage (Uber.AppDelegate)() -> () in AppDelegate.o
      l_get_field_types_AppDelegate in AppDelegate.o
  "_OBJC_CLASS_$_BMKMapView", referenced from:
      Uber.HomeCenterPage.viewDidLoad (Uber.HomeCenterPage)() -> () in HomeCenterPage.o
      l_get_field_types_HomeCenterPage in HomeCenterPage.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

15 重新创建一个项目是可以通过Cocoapods导入百度地图sdk的并且能够正常显示出来,那么问题来了就是因为在之前通过手动导入了一些银联的sdk包然后修改了里面的一些属性信息导致了这样的错误。
16 解决办法我想重新从git上面下载我们的代码,然后重新手动导入。

相关文章

  • UberDemo项目总结

    Uber打车app项目的功能模块主要有一下几点Demo: 1 首页启动播放AV效果2 注册流程2.1 选取国家,回...

  • 项目总结-园区项目总结

    今年是自己进入这个行业的第一年,做的第一个项目,项目时间:4月21日-11月8日。总结一下想到的问题,为日后作参考...

  • 【总结】2017.01.01

    2017.01.01 - 计划 2016.12月总结 2017.01月计划 项目总结 - 实际完成 项目总结一,二...

  • 2019-03-28

    总结总结项目的各种功能,写一下项目流程

  • iOS 基于 MVC 的项目重构总结

    iOS 基于 MVC 的项目重构总结 iOS 基于 MVC 的项目重构总结

  • 项目总结

    框架 项目后台采用Springboot+Mybatis的架构,前端使用的Vue框架和ECharts组件,使用Mav...

  • 项目总结

    经过一段时间的学习,智慧社区商超管理系统这个项目结束了,这个项目可分为六个部分: 系统需求分析 系统界面原型设计 ...

  • 项目总结

    将近半年多的时间,从产品到设计再到开发,现在我们的APP终于进入了公测阶段,利用这段比较轻松的时间对APP中用到的...

  • 项目总结

    SOA 面向服务架构 分布式项目的部署特点 真分布式:指的是,每个tomcat都在不同的机器上,通过IP地址来识别...

  • 项目总结

    用vue-cli脚手架搭建工作环境一共用到的依赖包

网友评论

    本文标题:UberDemo项目总结

    本文链接:https://www.haomeiwen.com/subject/jfpqlttx.html