小項(xiàng)目總結(jié)

1.概述

? ? ?這次做一款短小精悍的賺錢app薄坏。產(chǎn)品一周的原型圖設(shè)計(jì)之后,周五下午開會(huì)(12月18日)缝龄,一番頭腦風(fēng)暴之后汰现,總監(jiān)一錘定音挂谍,請(qǐng)大伙兩周搞定它。心中一番心潮澎湃瞎饲,心想反正也不難口叙。周末過后,美好的周一開始嗅战,UI開始設(shè)計(jì)界面妄田,我仔細(xì)看了下原型圖,沒啥復(fù)雜界面仗哨,完全不用擔(dān)心了形庭,就讓UI好好設(shè)計(jì)吧,我這邊先搭個(gè)架構(gòu)(storyboard厌漂、工具類萨醒、第三方庫),再斗兩局地主苇倡,慢慢得等富纸。沒曾想,這次測(cè)試轉(zhuǎn)UI得浩哥這么給力(專職UI離職了)旨椒,一設(shè)計(jì)就是一周啊晓褪,服務(wù)端接口也還在設(shè)計(jì)階段,沒界面沒數(shù)據(jù)综慎,我寫什么涣仿,所以依舊淡定。又經(jīng)過一個(gè)美好的周末示惊,好港,

? ? 第二周開始,正式coding了米罚。過程可以忽略钧汹,基本還順利,敲代碼的時(shí)刻平靜又美好录择,就像談鋼琴一樣(我不會(huì))拔莱,看著我,左手隘竭、右手一個(gè)慢動(dòng)作塘秦,彈指間又一個(gè)類。然后元旦我們就加班到通宵三點(diǎn)了货裹,2016的元旦嗤形,是一個(gè)美好的夜晚。

2.架構(gòu) - DVVD與storyboard

對(duì)弧圆,是DVVD赋兵。不是MVVM笔咽。D是dictionary,因?yàn)槲覜]有封裝Model霹期,總覺得封裝太麻煩叶组。后來事實(shí)證明我錯(cuò)了,以后一定封裝历造。之前controller里最高出現(xiàn)過七八百行代碼(這是個(gè)例外甩十,因?yàn)槭欠庋bSDK,只能一個(gè)類)吭产,看得頭暈?zāi)X脹侣监,兩眼昏花,后來網(wǎng)上看到MVVM臣淤,名字好高大上橄霉,我沒有用Model,那就叫DVVD吧邑蒋。

做了兩層ViewModel姓蜂,BaseViewModel和MainViewModel、LoginViewModel医吊。兩個(gè)model分別處理主頁面和登陸頁面的網(wǎng)絡(luò)請(qǐng)求钱慢、數(shù)據(jù)處理、邏輯判斷等卿堂。

UI方面束莫,使用storyBoard+xib(無autoLayout)+結(jié)合代碼調(diào)整。各首頁面的控制器均在storyBoard中草描,沒使用用autoLayout麦箍,storyboard和xib中只負(fù)責(zé)初始化view,以size為4.7寸屏幕搭建界面陶珠,具體適配工作,用代碼實(shí)現(xiàn)享钞。代碼中揍诽,根據(jù)各屏幕的寬高比相同,計(jì)算當(dāng)前屏幕的寬高與iphone6屏幕寬高的比值栗竖,根據(jù)該比值計(jì)算控件當(dāng)前的合理frame暑脆,從而修改frame星压。此方法封裝到工具類中即可康谆。

3.項(xiàng)目問題

項(xiàng)目雖然不大椎镣,小問題不少险掀,整理一下問題及解決方案呵萨。

3.1關(guān)于布局-靈活使用

自從使用過storyBoard之后,就比較喜歡這種布局方式了脑豹,并且也是蘋果官方推薦的方式坐慰。之前都是storyboard+autolayout的,這次搭建登錄注冊(cè)模塊時(shí)鲤孵,由于好多約束寫死的壶栋,在在小屏幕上很不成比例,還有一些imageview上圖片變形嚴(yán)重普监,網(wǎng)上查了下解決方案贵试,看到這位大神的方案,(storyboard無autolayout適配)?凯正,實(shí)驗(yàn)了一下效果不錯(cuò)毙玻,遂采用此方案。

另外就是布局要靈活廊散,如果一個(gè)頁面上要排布很多button桑滩,那么一個(gè)個(gè)拖到xib中,再一個(gè)個(gè)改frame奸汇,顯然很沒有效率施符,這個(gè)時(shí)候就可以結(jié)合代碼來實(shí)現(xiàn)了,將一些相似重復(fù)的布局工作放到代碼里也會(huì)大大提高工作效率擂找。

storyboard的粘貼戳吝,很多相似的布局可以粘貼使用,可以先打開storyboard的source code贯涎。

3.2鍵盤適配-放在基類

在注冊(cè)登錄頁面會(huì)遇到鍵盤遮擋問題听哭,在每個(gè)界面都添加監(jiān)聽事件重復(fù)性很大,放在基類中會(huì)大大提高效率塘雳。

可以再基類中添加監(jiān)聽鍵盤顯示與消失的通知事件陆盘,收到通知后獲取動(dòng)畫時(shí)間、與鍵盤的高度败明,傳給子類隘马,在子類中拿到所需數(shù)據(jù),傳給一個(gè)鍵盤manager處理妻顶。

注意的是記得移除通知酸员,viewWillDisappear中移除,放在dealloc中會(huì)有問題讳嘱,由于所有的子類都實(shí)現(xiàn)了父類的鍵盤通知方法幔嗦,當(dāng)鍵盤通知發(fā)生時(shí),所有的未dealloc子類都會(huì)實(shí)現(xiàn)該方法沥潭。

另外邀泉,鍵盤的UIKeyboardWillShowNotification會(huì)執(zhí)行四次,分別對(duì)應(yīng)于鍵盤顯示一大半以及鍵盤完全顯示時(shí),所以計(jì)算時(shí)要將計(jì)算的高度差除以2汇恤。

3.3友盟分享與統(tǒng)計(jì)

友盟用習(xí)慣了庞钢,分享功能還是很好用的。

將分享的代碼封裝起來屁置,提供分享到QQ焊夸、weChat、sina的接口即可蓝角。遇到一個(gè)bug是分享到qq時(shí)阱穗,本地圖片+標(biāo)題+文本+鏈接,當(dāng)圖片不存在時(shí)使鹅,就只剩文本了揪阶。

sina分享使用的微博非原生sdk,使用原生還是分享不了患朱,不清楚為啥鲁僚。記得實(shí)現(xiàn)一個(gè)delegate。(didSelectSocialPlatform)裁厅,調(diào)用分享面板冰沙,設(shè)置分享里的鏈接。

統(tǒng)計(jì)可以將相關(guān)代碼放在基類中执虹,如何設(shè)置page參數(shù)拓挥,知道是哪個(gè)頁面,使用runtime;

[MobClick beginLogPageView:[NSString stringWithFormat:@"%s", object_getClassName(self)]];

[MobClick endLogPageView:[NSString stringWithFormat:@"%s", object_getClassName(self)]];

3.4 提高開發(fā)效率?

重復(fù)的工作少做袋励,提高代碼邏輯侥啤,都可以大大提高開發(fā)效率。

1>布局方面茬故,靈活一些盖灸,該用代碼就用代碼。

2>使用一些xcode小插件磺芭。獲取圖片的赁炎,注釋的等等

3>.布局添加約束時(shí)花費(fèi)了大量的時(shí)間,現(xiàn)在使用storyboard+代碼钾腺,速度提高不少甘邀。

3.5 代碼邏輯

這大概是區(qū)分ios水平高低的標(biāo)準(zhǔn)之一,優(yōu)秀的代碼的代碼邏輯是很清晰的垮庐。總結(jié)一下目前所能提高代碼邏輯的方法:

1>.合理的封裝坞琴。所謂少而精哨查,多則亂。將重復(fù)代碼放到基類中剧辐,會(huì)大大提高代碼清晰度寒亥。

2>.減少if else邮府。大量的if else,看一會(huì)兒就暈掉了溉奕。改用switch 就用switch褂傀,合理使用return,考慮使用reactive cocoa框架加勤,還沒學(xué)會(huì)仙辟。

3>.良好的框架。小項(xiàng)目使用MVVM已經(jīng)很清晰了鳄梅,可能會(huì)造成viewModel很龐大叠国,還可以有更深入的封裝,簡(jiǎn)化viewModel層的代碼戴尸∷诤福可以參看這篇文章,繼續(xù)簡(jiǎn)化操作孙蒙。(猿題庫 iOS 客戶端架構(gòu)設(shè)計(jì))项棠。

4.總結(jié)

先寫到這兒,想到再加上挎峦。稍后香追,相關(guān)代碼會(huì)提交到Github中,期待與各大神分享交流浑测。

引用文章:
1.猿題庫 iOS 客戶端架構(gòu)設(shè)計(jì)

2.storyboard無autolayout適配




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翅阵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子迁央,更是在濱河造成了極大的恐慌掷匠,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岖圈,死亡現(xiàn)場(chǎng)離奇詭異讹语,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蜂科,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門顽决,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人导匣,你說我怎么就攤上這事才菠。” “怎么了贡定?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赋访,是天一觀的道長。 經(jīng)常有香客問我,道長蚓耽,這世上最難降的妖魔是什么渠牲? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮步悠,結(jié)果婚禮上签杈,老公的妹妹穿的比我還像新娘。我一直安慰自己鼎兽,他們只是感情好答姥,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著接奈,像睡著了一般踢涌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上序宦,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天睁壁,我揣著相機(jī)與錄音,去河邊找鬼互捌。 笑死潘明,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秕噪。 我是一名探鬼主播钳降,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼腌巾!你這毒婦竟也來了遂填?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤澈蝙,失蹤者是張志新(化名)和其女友劉穎吓坚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灯荧,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁击,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逗载。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哆窿。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厉斟,靈堂內(nèi)的尸體忽然破棺而出挚躯,到底是詐尸還是另有隱情,我是刑警寧澤擦秽,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布秧均,位于F島的核電站食侮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏目胡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一链快、第九天 我趴在偏房一處隱蔽的房頂上張望誉己。 院中可真熱鬧,春花似錦域蜗、人聲如沸巨双。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筑累。三九已至,卻和暖如春丝蹭,著一層夾襖步出監(jiān)牢的瞬間慢宗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工奔穿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镜沽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓贱田,卻偏偏與公主長得像缅茉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子男摧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫蔬墩、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,119評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,281評(píng)論 25 707
  • (姑娘耗拓,姑娘拇颅。你在為誰哭泣?我不是想揭開你的傷疤帆离,我只是想給你一劑止痛的良藥蔬蕊。) (一) 故事要從那天晚飯開始講起...
    北方姑娘芷若閱讀 542評(píng)論 22 6
  • block對(duì)于初學(xué)者,會(huì)覺得block比較復(fù)雜,很難理解. 尤其是在作為參數(shù)的時(shí)候. 一般在實(shí)際使用的時(shí)候我們常...
    Abler閱讀 1,023評(píng)論 0 0
  • ?說明:本文版權(quán)歸屬逍遙魏紫,若有轉(zhuǎn)載哥谷,請(qǐng)注明出處岸夯。
    逍遙魏紫閱讀 200評(píng)論 0 0