<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Coding-iOSCODING iOS 客戶端源代碼

          聯(lián)合創(chuàng)作 · 2023-09-30 19:05

          Coding_iOS客戶端項(xiàng)目介紹

          編譯環(huán)境:Xcode-Version 8.0 (8A218a)

          讓項(xiàng)目跑起來先

          項(xiàng)目里用到了 CocoaPodsCarthage,如果沒有安裝的話,需要先自行安裝。

          Clone 代碼后,初次執(zhí)行前,需要雙擊運(yùn)行根目錄下的bootstrap腳本。這個(gè)過程涉及到下載依賴,可能會(huì)有點(diǎn)久,需耐心等待。

          Tip:由于用到了 submodule,所以必需要把 git 倉(cāng)庫(kù) clone 到本地,而不是只點(diǎn)擊‘下載’按鈕下載 zip 文件!?。?/strong>

          精彩項(xiàng)目 任務(wù)管理 項(xiàng)目文檔 代碼托管 趣味冒泡

          下面介紹一下文件的大概目錄先:

              .
              ├── Coding_iOS
              │   ├── Models:數(shù)據(jù)類
              │   ├── Views:視圖類
              │   │   ├── CCell:所有的 CollectionViewCell 都在這里
              │   │   ├── Cell:所有的 TableViewCell 都在這里
              │   │   └── XXX:ListView(項(xiàng)目、動(dòng)態(tài)、任務(wù)、討論、文檔、代碼)和 InputView(用于聊天和評(píng)論的輸入框)
              │   ├── Controllers:控制器,對(duì)應(yīng)app中的各個(gè)頁(yè)面
              │   │   ├── Login:登錄頁(yè)面
              │   │   ├── RootControllers:登錄后的根頁(yè)面
              │   │   ├── MeSetting:設(shè)置信息頁(yè)面
              │   │   └── XXX:其它頁(yè)面
              │   ├── Images:app 中用到的所有的圖片都在這里
              │   ├── Resources:資源文件
              │   ├── Util:一些常用控件和 Category、Manager 之類
              │   │   ├── Common
              │   │   ├── Manager
              │   │   ├── OC_Category
              │   │   └── ObjcRuntime
              │   └── Vendor:用到的一些第三方類庫(kù),一般都有改動(dòng)
              │       ├── AFNetworking
              │       ├── AGEmojiKeyboard
              │       ├── ASProgressPopUpView
              │       ├── ActionSheetPicker
              │       ├── FontAwesome+iOS
              │       ├── MJPhotoBrowser
              │       ├── MLEmojiLabel
              │       ├── NSDate+Helper
              │       ├── NSStringEmojize
              │       ├── PPiAwesomeButton
              │       ├── QBImagePickerController
              │       ├── RDVTabBarController
              │       ├── SMPageControl
              │       ├── SVPullToRefresh
              │       ├── SWTableViewCell
              │       ├── UMENG
              │       ├── UMessage_Sdk_1.1.0
              │       ├── XGPush
              │       ├── XTSegmentControl
              │       └── iCarousel
              └── Pods:項(xiàng)目使用了 [CocoaPods](http://code4app.com/article/cocoapods-install-usage) 這個(gè)類庫(kù)管理工具
          

          再說下項(xiàng)目的啟動(dòng)流程:

          在 AppDelegate 的啟動(dòng)方法中,先設(shè)置了一下 Appearance 的樣式,然后根據(jù)用戶的登錄狀態(tài)選擇是去加載登錄頁(yè)面 LoginViewController,還是登錄后的 RootTabViewController 頁(yè)面。

          RootTabViewController 繼承自第三方庫(kù) RDVTabBarController。在 RootTabViewController 里面依次加載了 Project_RootViewController、MyTask_RootViewController、Tweet_RootViewController、Message_RootViewController、Me_RootViewController 五個(gè) RootViewController,后續(xù)的頁(yè)面跳轉(zhuǎn)都是基于這幾個(gè) RootViewController 引過去的。

          項(xiàng)目里面還有些需要注意的點(diǎn)

          • Coding_NetAPIManager:基本上 app 的所有請(qǐng)求接口都放在了這里。網(wǎng)絡(luò)請(qǐng)求使用的是 AFNetworking 庫(kù),與服務(wù)器之間的數(shù)據(jù)交互格式用的都是 json(與 Coding 使用的 api 一致)。

          • 關(guān)于推送:剛開始是用的 友盟推送,后來又改用了 騰訊信鴿,因?yàn)橐骖櫯f版本 app 的推送,所以服務(wù)器是同時(shí)保留了兩套推送。但是為了確保新版本的 app 不同時(shí)收到雙份相同的推送消息,所以當(dāng)前代碼里還存留了友盟的 sdk,用于解除推送 token 與友盟 Alias 的綁定。

          • 關(guān)于 ProjectViewController:這個(gè)就是進(jìn)入到某個(gè)項(xiàng)目之后的頁(yè)面,這里包含了項(xiàng)目的動(dòng)態(tài)、任務(wù)、討論、文檔、代碼、成員各類信息,而且每類信息里面還可能會(huì)有新的分類(如‘任務(wù)’里面還分有各個(gè)成員的任務(wù));這個(gè)頁(yè)面相當(dāng)?shù)挠纺[,我對(duì)它們做了拆分,都放在視圖類 Views 目錄下面。 首先是把數(shù)據(jù)列表獨(dú)立成了對(duì)應(yīng)的 XXXListView(如 ProjectTaskListView);然后如果需要標(biāo)簽切換的話,會(huì)再新建一個(gè) XXXsView(如:ProjectTasksView),在這個(gè)視圖中,上面會(huì)放一個(gè)切換欄 XTSegmentControl 顯示各個(gè)標(biāo)簽,下面放一個(gè) iCarousel 可以滑動(dòng)顯示各個(gè)標(biāo)簽的內(nèi)容;最后這些視圖都會(huì)存儲(chǔ)在 ProjectViewController 的 projectContentDict 變量里面,根據(jù)頂部導(dǎo)航欄選擇的類別,去顯示或隱藏對(duì)應(yīng)的視圖。

          • 關(guān)于 UIMessageInputView:這個(gè)是私信聊天的輸入框。因?yàn)檫@個(gè)輸入框好多地方都有用到(冒泡、任務(wù)、討論的評(píng)論還有私信),所以這個(gè)輸入框就寫成了一個(gè)相對(duì)獨(dú)立的控件,并且直接顯示在了 keyWindow 里面而不是某個(gè)視圖里。這里的表情鍵盤用的是 AGEmojiKeyboard 改寫了一下。

          • 關(guān)于 Emoji:這個(gè),Coding 站點(diǎn)的 emoji 都是用的圖片,而且服務(wù)器是不接受大部分 emoji 字符的,所以剛開始的時(shí)候 app 一直不能處理 emoji 表情;又因?yàn)闆]有 emoji 圖片名和 emoji code 碼的對(duì)應(yīng)關(guān)系表,所以拖了很久都沒能做好轉(zhuǎn)換。直到在 github 上面找到了 NSStringEmojize 這個(gè)項(xiàng)目;試了一下,雖然也不能全部解析,但是大部分表情都能正確顯示了,不能更感謝。

          • 關(guān)于如何正確顯示冒泡的內(nèi)容:api 返回的數(shù)據(jù)里面,冒泡內(nèi)容都是 html 格式,需要做一下預(yù)處理;其實(shí)私信、討論里面的內(nèi)容也是 html。解析 html 的類名是 HtmlMediaItem,它是先用 hpple 對(duì) html 進(jìn)行了解析,然后把對(duì)應(yīng)的 media 元素和對(duì)應(yīng)的位置做一個(gè)存儲(chǔ),顯示的時(shí)候便可以根據(jù)需要來顯示了。

          最后說下 CocoaPods 里面用到的第三方類庫(kù)

          License

          Coding is available under the MIT license. See the LICENSE file for more info.

          瀏覽 19
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国一区二区不卡 | 在线豆花Av | 黄色在线免费看 | 91天堂精品搭讪素人系列 | 久久国产露脸精品国产 |