【周總結】開發中遇到的小知識點(2019.01.14-2019.01.19)
本周還是比較輕松的,小程序開發也接近了尾聲,就是一些簡單的修改了。我也就有了時間來回歸老本行,重寫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)。
下面我寫幾個比較好的博客,如果你這個理解不清楚的可以看一下
參考文檔:博客一、博客二
【周總結】開發中遇到的小知識點(2019.01.14-2019.01.19)