仿36氪(iOS版附源代碼)

前言:

這是我2016年3月開始寫的,利用課餘時間全心投入的項目,本覺得是憑着輕鬆愉悅的方式來學習的,中途遇到bug解決bug的時候,天天晚上幾乎都是寫到寢室關燈,還有一次使用Github不當寫了五天的代碼一晚上恢復到解放前,如今每次Commit都會把項目複製一份,項目使用OC寫的,主要是想記錄下OC項目整個過程,在過渡學習Swift,寫的還不完善,不足之處還請見諒,因爲時間比較匆忙,這個月還剩下十來天忙着考試,4月份會把後續功能實現,這是第一次把以項目的形式分享到博客。git

項目描述(附源代碼底部):

開源項目爲36氪,一款提供股權類互聯網金融平臺APP,項目爲純代碼,XIB+代碼開發,全部的數據都是經過Charles抓包工具獲取到的, 圖片經過Extractor解壓獲得(部分圖片找不到),視頻播放器是經過36氪開源播放器(採用View+MPMoviePlayerViewController)改進的播放器使用的是View + AVPlayer,支持播放mp四、mov等格式,網絡和本地視頻同時支持,支持Cell中全屏和小屏自動感應旋轉屏幕,參考WMPlayer,無需第三方庫支持。github

效果圖:

 

首頁效果web

 


 

側滑效果數組

 


 

其餘模塊首頁效果緩存

 


 

氪TV首頁效果網絡

 


 

新聞內容頁效果ide

 


 

輪播頁內容效果工具

 


 

評論頁效果學習

 


 

搜索頁效果3d

 


 

離線緩存

項目當中用到的緩存方式是JSON數據以文件的形式保存,由於要放到文件當中存儲,因此在這裏JSON要通過必定的轉化,若是不經轉化取出來的字典數組是爲空的,個人方式是這樣的,具體能夠參考HttpRequest文件和NewsVC

保存的過程:NSDate->NSString 

取出過程 NSString->JSON對象序列化-》(字典數組)NSArray->模型數組(NSSArray)

值得注意點:

數據解析:[{}]格式 使用 字典數組 -> 模型數組 ,{} 字典 轉一個模型

AVPlayer:能夠經過videoGravity有三種形式設置播放形AVLayerVideoGravityResizeAspect,AVLayerVideoGravityResizeAspectFill,和AVLayerVideoGravityResize。默認的是AVLayerVideoGravityResizeAspect:會出現頂部和底部分別有20大小的間隙,AVLayerVideoGravityResize(項目當中用到的):拉伸,以填補CALayer的界限AVLayerVideoGravityResizeAspectFill:保留長寬比;填補CALayer的界限。

解決網速慢的問題:(用寢室CMCC播放視頻的時候會出現視頻中止的效果,須要再次點擊才能夠繼續播放,在卡在點的狀況),個人解決辦法是這樣的,經過判斷當前時間和播放時間進行比較,若是一致則出現停頓狀況,具體能夠詳見項目 

討論頁Cell自適應:個人思路是這樣的,首先cell先計算好文本高度,而後將高度的值賦給heightLabel(用於保存每一個cell的高度),控制器在從heightLabel取出(這樣減小一次在heightForRowAtIndexPath方法在計算一次高度)

新聞內容頁:頂部用戶簡介是一個cell,新聞內容頁是一個通過嵌套webView的cell

ESJsonFormat-Xcode在開發中用到這個工具,因此文件命名的時候不規範,還請見諒

項目是獨立開發的,目前還在校園,QQ363905547 有問題能夠一塊兒探討

但願順便點一下右上角的⭐️Star ,朋友的鼓勵和支持是我繼續分享的動力

github地址  仿36氪 源文件地址

                   視頻播放器:源文件地址

相關文章
相關標籤/搜索