本周还是比较轻松的,小程序开发也接近了尾声,就是一些简单的修改了。我也就有了时间来回归老本行,重写iOS。这周我花了一些时间来把之前仿写的Swift项目完成。这个应用比较简单,但是实用点还是不少的。下面听我一一道来。
首先是搭建框架,在之前OC中我有自己的一套框架,用起来比较顺手。于是在swift中我也准备弄一套类似的框架。在最开始我失败了。在我创建父控制器的时候,我创建新的子控制器继承他发现不能自动生成viewdidload()方法。后来慢慢就好了,这应该是编译器的问题。靠苹果自己解决了。
然后是声明一些常见的宏定义,这个就比较简单了。只需要声明一个文件即可,但是需要注意写法
接下来就是重点了。由于这个项目我打算纯swift编写,于是一些之前常用的三方库都不能使用了。我就只能在github上查找一些比较好用的Swift库。
pod ‘Alamofire‘ pod ‘Kingfisher‘ pod "ESTabBarController-swift" pod ‘GTMRefresh‘ pod ‘SnapKit‘ pod ‘SwiftyJSON‘ pod ‘XHToastSwift‘ pod ‘JXPhotoBrowser‘
这里面涵盖了网络请求、图片加载、下拉刷新、数据存储、页面创建、图片查看等等常见功能,基本上常见APP上的功能都可以靠它们实现。使用方法我就不在这里贴出了。可以去网上查找,也可以去我的github上下载我的项目。
在这个项目中我使用了tableview和collectionView这些常见列表,进行了数据存储、加载查看保存图片,网络请求、数据解析。在开发中也遇到了一些困难。在下面我就把这些问题和解决方法一一列出。
1.navigation添加搜索框
navigationItem的titleView不能直接设置成searchbar。
原因如下,如果设置成searchbar设置frame之类的会变形,且不好监控。这时候我们可以先设置一个UIView,在UIView上添加searchbar,然后后UIView设置为titleView。
2.navigation添加搜索框取消第一响应
这个就是我自己的问题了。是我自己开始没考虑对方向。我在父控制器中添加了点击手势,再点击的时候取消第一响应。
self.view.endEditing(true)
可是我在这里失败了,我开始没想到为什么,于是我在viewWillDisappear()中也写了上面的代码,还是不行。
最后我终于想到了为什么。self.view不包括导航栏
override func endEditingAction() { self.view.endEditing(true) self.navSearchBar.resignFirstResponder() // 或者 self.navSearchBar.endEditing(true) }
3.设置edgesForExtendedLayout
在oc中我一般把这个设置为none来使坐标原点从(0,0)变到(0,64)。于是在父控制器中我也就写了这个,结果坐标原点从(0,64)变到了(0,128)。
下面我写几个比较好的博客,如果你这个理解不清楚的可以看一下
原文地址:https://www.cnblogs.com/weicyNo-1/p/10291829.html