一,聲明:
語言:Swift3
平臺:Xcode8
模仿對象:百思不得姐4.5
在OC之后,為了入手一下用Swift的開發,強行裝逼開啟自虐模式~在用時一個月的時間(工作時間之外的閑暇),將百思不得姐的主體部分拿下.
1.先說一下瑕疵:
數據是來自易源數據(可百度搜索),內容有限,而且本地資源,例如圖片,UI等也比較受限,主要靠截圖~強行配圖,而且沒有關于"友盟分享","第三方登錄","推送通知","數據操作","友盟統計"等其他功能,而且有部分冗余代碼,略有Bug!但整個項目的目的主要是了解百思項目的整體架構,深入學習Swift開發.所以,一些粗枝大葉不必在意~.在本項目中,主要解析了圖片和音頻部分的文件(在精華部分),其他界面都是由空白界面代替(知其一,盡知全),在最新部分和發布界面沒有數據,展示了界面的出現方式,關注部分無數據,更無操作,從線上百思不得姐項目來看主要展示了一組數據,行為簡單,可以忽略~我的部分完成界面排版.基本邏輯比較簡單,無數據,但是行為邏輯較為簡單,后面詳述.
2.再看一下學習點:
整體結構還是比較完整的,細節部分也較簡單,不受太大的學習上的阻礙.主題結構邏輯較為完善,主要體現在整個結構和每個主界面的出現邏輯上.除去關注界面意外,每個界面都有可以學習的知識點.而且沒有出現的行為邏輯,我也將會做簡單闡述.
二,學習主體
1.首先看一下第一界面:精華部分
1.1在線上百思項目中頂部導航欄右側有一部分,隨機穿越,這里沒有寫,按照我的理解,應該是取隨機參數,從后臺獲取某一類型的數據(如圖片,文字,音頻等)返回,解析并展示,也可以是后臺根據你的瀏覽記錄,根據你所經常瀏覽的內容類型來返回內容.
1.2學習點之一在于圖片輪播技術,導航欄中滾動條顯示的是內容目錄,點擊相應的目錄就會滾動至對應的內容模塊,加載并展示(如果已經加載過,就直接顯示了),而且滾動主界面,不管朝向左還是朝向右都可以無限輪播的,這個過程頂部的導航內容還是會監聽并滾動到對應位置的(其實是一個相互監聽運動的過程).
1.3學習點之二在于OC-Swift混編,主界面的刷新控件使用的是MJ老師MJRefresh,所以這里就涉及OC-Swift之間的混編,主要是橋接文件的創建(創建任意OC文件,自動生成bridge橋接文件,根據需要,刪除或者保留創建的OC文件)與使用.
1.4學習點之三在于圖片的預覽,在工程項目文件中,Public部分有一組文件(BSCheckImagePart)專門用來展示完成圖片的預覽,可以是一組照片的預覽(由于時間限制,并沒有進行一組照片的限制,你可以自己嘗試自己修改學習~).
1.5學習點之四在于音頻的觀看,同樣在工程的項目文件中,Public部分還有一組名為(BSCheckVideoPart)的文件專門用來完成視頻的播放,但是這里強調的一點是,只是完成了基本播放功能,整個播放器還不夠完善,你可以在這份文件的基礎上按照你的構想和需要來加以完善(別忘記發我一份共同學習~)
1.6具體代碼的實現,邏輯的完成可以詳見Main中的(EssencePart)部分
2.接下來略講解一下:最新部分
2.1在線上百思項目中頂部導航欄右側有一部分:審帖.根據個人推測,這個應該就是后臺返回的最新的請求發布的數據中任意選取返回的某一組數據.可以進行某些簡單操作,可以舉報,投票或者切換下一個等~
2.2學習點其實同之前的精華界面極盡相同,那就是輪播,其中不同的就是,點擊導航條索引時,不管是點擊前面還是點擊后面,主界面的滾動方式都會是自右至左,而不會有向左的,有向右的.只有在手動拖動主界面從左向右走時才會有改變.具體代碼可見Public部分的NewestPart部分.
3.接下來講解的是:發布界面
3.1首先請注意,在這里的發布界面的入口都沒有再深入的去寫,每個入口都進入了不同的數據采寫界面,例如音頻的采集,文字的編寫,圖片的獲取等等.內容還是挺繁多的.大家可以自定來嘗試完善與練習!還有該界面是由View來寫的,但是線上的百思項目應該是由Controller來寫的,這里注意下,如果使用控制器來編寫,那在在下面應該是有一個UIImageView來裝填在進入該界面之前的界面截圖的.
3.2學習點在于界面的排版(九宮格)與動畫效果(出現與消失)具體可見代碼Main中的(ReleasePart中的View)部分
4.關注界面
4.1線上百思項目中該界面的左上方是一個進入推薦界面的入口,是兩個TableView構成的界面,根據不同的類型獲取不同類型的用戶推薦你進行"關注"操作.重點就是兩個TableView的監聽互動以及怎樣正確顯示對應的數據~
4.2右上方有一個搜索入口按鈕,進入一個搜索界面,主界面中顯示的是可以由CollectionView布局的一些推薦數據,主要包括圖片和音頻文件.再點擊搜索才是真正的搜索界面,根據你輸入的內容,后臺針對你在的界面返回對應類型的數據并展示.
5.我的界面
5.1線上百思左上方是積分詳情的界面,可以使用WebView來展示該網頁,右上角的是一個全局背景色設置按鈕和設置按鈕.全局的背景顏色可以通過拋通知實現.
5.2學習點主要在于排版,TableView的排版與九宮格的排版.具體可見代碼Main中的(MePart)部分
6.整體結構的布局,UIWindow->BSTabBarController->BSPublicNavController->BSThemeViewController.....布局及細節可見代碼Public的Controller部分!
三,其他補充
1.在Public里面有很多好東西可以使用~例如某些類的分類.以及上面提到的圖片瀏覽器和音頻瀏覽器的分組模塊都在這一部分.
2.本項目使用了幾個第三方的SDK,主要包括Alamofire(網絡請求),JHB_HUDView(蒙版),Kingfiser(圖片下載),MJRefresh(刷新控件),其他的幾個并未使用~可自行使用或學習即可.
3.播放音頻文件時,請不要打斷點哦~
4.百思項目地址:Github-百思不得姐(BaiSi-Project)覺得不錯點歌贊就好~一起學習!萬分感謝你的關注.