iOS高仿?一個-ONE?App

復(fù)雜世界里骡澈,一個就夠了

一個就夠了.png

前言

  • ?一個-ONE?是一款由韓寒監(jiān)制,制作精良的文藝生活閱讀類App攀涵,應(yīng)用精致優(yōu)雅铣耘,秉承著"復(fù)雜世界里,一個就夠了"的理念以故。
  • 作為一個(偽)文藝的青年蜗细,很喜歡這款A(yù)pp精致簡練的設(shè)計與文藝范。正好近期需要寫一個比較完整的項目來練手怒详、驗證自己的學(xué)習(xí)成果炉媒,所以著手開始寫了這個項目。
  • 花費了大概半個多月昆烁,完成了這款A(yù)pp的臨摹高仿吊骤。相似度高度99%。在下iOS開發(fā)行業(yè)新人静尼,學(xué)藝不精白粉,如有不佳之處,還望各位前輩大佬多多指點鼠渺。
  • 項目GitHub地址:iOS高仿"一個-ONE"鸭巴。有興趣的朋友歡迎下載運行項目查看作品效果??。如果對源碼有任何意見或建議拦盹,也歡迎在本文評論區(qū)留言或在GitHub issue me.


聲明

  1. 本文章由簡書作者Coulson_Wang原創(chuàng)鹃祖,相應(yīng)的項目由GitHub用戶Coulson_Wang編寫并開源分享。轉(zhuǎn)載分享請注明出處普舆,謝謝恬口。
  2. 本項目用到了以下開源三方框架,感謝各位作者的開源貢獻(xiàn)奔害。
AFNetworking 用于發(fā)送網(wǎng)絡(luò)請求
FLAnimatedImage 用于處理gif動態(tài)圖的顯示
Masonry 用于在部分界面添加自動布局約束
MJRefresh 用于處理下拉和上拉刷新
NYTPhotoViewer 用于處理“影視”界面的圖片瀏覽
SDWebImage 用于圖片下載展示
SVProgressHUD 用于提示HUD的展示
  1. 本開源項目僅供學(xué)習(xí)交流使用楷兽,請勿用于任何商業(yè)用途。
  2. 項目中使用了原App?一個-ONE?中的圖片資源和數(shù)據(jù)华临。所有網(wǎng)絡(luò)數(shù)據(jù)通過Charles抓包獲取芯杀,在項目中已將網(wǎng)絡(luò)請求代碼封裝為.a靜態(tài)庫隱藏,避免擴(kuò)散雅潭。如若侵犯了版權(quán)揭厚,請聯(lián)系博主的郵箱wangyuanyi1993@126.com,博主會及時刪除相關(guān)敏感內(nèi)容扶供。


項目展示

廢話不多說筛圆,直接上代碼,哦不椿浓,上gif效果圖太援。

  • 主界面:


    主界面展示.gif

主界面是這個項目中最復(fù)雜的界面闽晦,涉及到多個tableView的展示跳轉(zhuǎn)切換。tableView中不同類型的cell以及單獨的headerView也有各種細(xì)節(jié)需要處理提岔。
主要實現(xiàn)思路是在一個scrollView上添加了3個tableView來分別展示前一天仙蛉、當(dāng)天、下一天的內(nèi)容碱蒙,在左右滾動scrollView時移動tableView的位置并刷新數(shù)據(jù)


  • 詳情頁:


    詳情頁展示.gif

詳情頁中需要展示文章內(nèi)容荠瘪、評論信息等。由于服務(wù)器返回的文章數(shù)據(jù)是HTML赛惩,主要實現(xiàn)思路是用一個tableView來處理評論列表哀墓,而頂部通過將一個webView設(shè)置為headerView來展示文章內(nèi)容。其中涉及了動態(tài)計算webView高度喷兼、處理navigationBar顯示燈細(xì)節(jié)處理篮绰。


  • 專題頁:


    專題頁面展示.gif

專題頁主要涉及到tableView多個section以及header和footer的處理。其中頂部的輪播器使用了我自己封裝的一個三方框架CWCarouselView來實現(xiàn)季惯。


  • 搜索界面:


    搜索界面展示.gif

搜索界面主要是在項目基礎(chǔ)原上做的一些擴(kuò)展阶牍,調(diào)用已經(jīng)寫好的主頁、詳情頁接口直接跳轉(zhuǎn)展示星瘾。其中實現(xiàn)了一些選擇器動畫的展示走孽。

限于篇幅以及簡書5.0MB的圖片上傳限制,這里就不再繼續(xù)進(jìn)行效果展示了琳状,感興趣的朋友可以前往項目的GitHub地址下載項目源碼運行查看完整效果磕瓷。


項目結(jié)構(gòu)

  • 項目的整體架構(gòu)采用了MVC的模式。開發(fā)方式使用了storyBoard+xib+代碼結(jié)合的形式念逞。程序入口使用storyBoard搭建困食,由MainStoryboard負(fù)責(zé)整體結(jié)構(gòu)。各個模塊的詳情界面則由控制器自行push或modal處理翎承。storyBoard格局如圖:
storyBoard結(jié)構(gòu).png
  • 項目文件結(jié)構(gòu):
項目文件結(jié)構(gòu).png

其中:

  1. Main中包含三個模塊


    Main文件夾結(jié)構(gòu).png
  • Launch負(fù)責(zé)處理程序啟動時的啟動界面展示
  • TabBar負(fù)責(zé)處理程序的根控制器-tabBarController
  • Navigation自定義了導(dǎo)航控制器以及導(dǎo)航條硕盹,負(fù)責(zé)所有界面的導(dǎo)航功能
  1. ONE中包含多個模塊,負(fù)責(zé)處理主界面以及相關(guān)的衍生界面(比如詳情頁叨咖、作者頁瘩例、登錄界面、分享界面等)
  2. ALL模塊負(fù)責(zé)處理專題界面(即tabBarController的第二個控制器)
  3. ME模塊負(fù)責(zé)處理"我的"界面(即tabBarController的第三個控制器)
  4. Search模塊負(fù)責(zé)處理搜索頁以及搜索結(jié)果頁的展示與業(yè)務(wù)邏輯
  5. Other包含以下模塊


    Other文件夾結(jié)構(gòu).png
  • category包含了大量的分類文件
  • const包含一對常量文件甸各,用于定義一些全局常量
  • lib中包含3個自己封裝的第三方庫垛贤。分別是:打包成靜態(tài)庫的網(wǎng)絡(luò)請求工具類,輪播器控件CWCarouselView趣倾,用于處理點贊時數(shù)字滾動的Label控件CWCalendarLabel
  • tool中包含了大量抽取出來的工具類聘惦,用于處理數(shù)據(jù)持久化、音頻播放儒恋、登錄分享善绎、權(quán)限獲取黔漂、定位獲取等功能。


項目總結(jié):

學(xué)而不敲則罔禀酱,敲而不學(xué)則怠瘟仿。編程技術(shù)就是在不斷的學(xué)習(xí)和實踐中逐漸提升的。
在寫這個項目的過程中比勉,讓我發(fā)現(xiàn)了自己其實還有很多方面的知識并沒有掌握,或是學(xué)過了但沒有印象驹止,但是在寫項目的過程中浩聋,必然需要去復(fù)習(xí)和鞏固并加以利用。
只有不斷的學(xué)習(xí)擴(kuò)充自己的知識儲備臊恋,并且不斷的投入到項目實戰(zhàn)中衣洁,才能真正確保自己的技術(shù)水平持續(xù)提高。

希望以后能給大家?guī)砀喔玫拈_源項目抖仅。


項目缺陷:

由于部分界面中服務(wù)器返回的數(shù)據(jù)是HTML的格式坊夫,在項目中是使用webView來加載HTML文本實現(xiàn)展示的。但由于沒有開發(fā)文檔撤卢,自行解析HTML中的標(biāo)簽使用JavaScript代碼來處理用戶交互的話十分困難环凿,也沒有太高的技術(shù)含量,所以該項目中放棄了webView的用戶交互事件處理放吩。
由于以上原因智听,在部分界面會有按鈕點擊無效的情況,例如專題頁內(nèi)的詳情頁標(biāo)簽點擊跳轉(zhuǎn)渡紫、有聲讀物播放等到推,望各位悉知。


后記

項目介紹就先到這里了惕澎,覺得有幫助的朋友給個贊再走吧~??
如果有任何疑問歡迎在評論區(qū)留言交流莉测,謝謝各位看官的閱讀~

最后再放一次GitHub地址:https://github.com/CoulsonWang/CWOne
歡迎大家來圍觀,順便求個Star啊啊啊啊~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唧喉,一起剝皮案震驚了整個濱河市捣卤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌八孝,老刑警劉巖腌零,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唆阿,居然都是意外死亡益涧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門驯鳖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闲询,“玉大人久免,你說我怎么就攤上這事∨せ。” “怎么了阎姥?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸽捻。 經(jīng)常有香客問我呼巴,道長,這世上最難降的妖魔是什么御蒲? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任衣赶,我火速辦了婚禮,結(jié)果婚禮上厚满,老公的妹妹穿的比我還像新娘府瞄。我一直安慰自己,他們只是感情好碘箍,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布遵馆。 她就那樣靜靜地躺著,像睡著了一般丰榴。 火紅的嫁衣襯著肌膚如雪货邓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天四濒,我揣著相機(jī)與錄音逻恐,去河邊找鬼。 笑死峻黍,一個胖子當(dāng)著我的面吹牛复隆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姆涩,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼挽拂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骨饿?” 一聲冷哼從身側(cè)響起亏栈,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宏赘,沒想到半個月后绒北,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡察署,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年闷游,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡脐往,死狀恐怖休吠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情业簿,我是刑警寧澤瘤礁,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站梅尤,受9級特大地震影響柜思,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巷燥,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一赡盘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矾湃,春花似錦、人聲如沸堕澄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛙紫。三九已至拍屑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坑傅,已是汗流浹背僵驰。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留唁毒,地道東北人蒜茴。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像浆西,于是被迫代替她去往敵國和親粉私。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,298評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫近零、插件诺核、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,120評論 4 61
  • 讓我再看你一眼。 從南到北久信? 不是窖杀,是星空和黑夜。 陶敬掐滅了手中的煙裙士,倚著身后的電線桿子入客,伸出手,搭在黃雀的肩頭...
    江槎閱讀 525評論 0 1
  • 我和T有過好多個約定。 早先約著要早睡痊项,于是常常過了十二點锅风,我安慰自己,現(xiàn)在是度日了鞍泉,非熬夜也皱埠。假裝守住了這第一約...
    一團(tuán)紙啊閱讀 882評論 0 2
  • 一、nginx安裝 添加ppa: 配置虛擬主機(jī): 生成域名為名稱的nginx配置文件 修改配置文件內(nèi)容 生成主機(jī)根...
    悠遠(yuǎn)晴空閱讀 537評論 0 0