一.廣告界面業(yè)務(wù)邏輯
1.什么時(shí)候進(jìn)入廣告界面(程序啟動(dòng)完成的時(shí)候,進(jìn)入廣告界面)
為什么?程序啟動(dòng)的時(shí)候,我們沒(méi)有辦法處理,蘋果沒(méi)有提供對(duì)應(yīng)API.
2.設(shè)置窗口根控制器為廣告控制器
為什么?一開(kāi)始想顯示誰(shuí),就設(shè)置誰(shuí)為窗口根控制器,因?yàn)榇翱谠陲@示的時(shí)候,會(huì)自動(dòng)把根控制器的view添加窗口
二.搭建廣告界面
1. 理清楚界面層次結(jié)構(gòu)(3層:啟動(dòng)圖片界面,廣告界面,按鈕)
2.占位視圖思想:當(dāng)層次結(jié)構(gòu)清楚,但是某一層還不確定內(nèi)容,可以采取占位視圖,搞一個(gè)UIView占這個(gè)位置,這個(gè)UIView占據(jù)整個(gè)父控件尺寸,顏色設(shè)置為透明色
占位視圖思想:當(dāng)一個(gè)界面層次結(jié)構(gòu)清楚,但是某些層不確定,可以采用占位視圖
3.啟動(dòng)圖片:為什么廣告界面要弄一個(gè)啟動(dòng)圖片,欺騙用戶一直在啟動(dòng),從而順其自然插入廣告
3.1 屏幕適配:每個(gè)屏幕設(shè)置對(duì)應(yīng)的啟動(dòng)圖片
3.2 根據(jù)屏幕高度去做屏幕適配 (4:489 5:568 6:667 7:736),定義宏,為什么:方便讀代碼
4.界面結(jié)構(gòu)固定,可以用xib來(lái)描述,界面結(jié)構(gòu)不固定,或界面內(nèi)容不確定,要用代碼來(lái)描述
5.第三方框架管理 ? ? ?為什么使用cocoapods?
cocoa pods:2014火
cocoapods:管理第三方框架,怎么管理
cocoapods:會(huì)自動(dòng)導(dǎo)入依賴庫(kù)
cocoapods工作原理:首先在工程文件中使用podfile,podfile(描述好,當(dāng)前工程需要第三方框架) ,pod install 就會(huì)自動(dòng)幫你導(dǎo)入這個(gè)框架
// 使用cocoapods步驟: 命令行
// 1.在當(dāng)前工程文件中,創(chuàng)建podfile(pod init)
// 2.打開(kāi)podfile描述下需要導(dǎo)入框架
// 3.怎么知道描述,pod search AFN
// 4.pod install
三.加載廣告數(shù)據(jù)
1.AFN加載數(shù)據(jù)
2.cocoapods導(dǎo)入AFN
3.查看接口文檔(完整url:基本url+請(qǐng)求參數(shù),請(qǐng)求方式)
4.驗(yàn)證接口,查看服務(wù)器返回?cái)?shù)據(jù)
5.AFN真正發(fā)送請(qǐng)求
5.1 支持http ? ? ?修改ATS屬性
5.2 服務(wù)器返回響應(yīng)頭寫錯(cuò)(text/html),導(dǎo)致AFN不能響應(yīng)
修改AFN怎么修改?
查看別人做了什么事情 : 跳方法
查看這個(gè)類有哪些功能 : 跳類
5.3 自定義AFN響應(yīng)對(duì)象,專門解析當(dāng)前app的響應(yīng)數(shù)據(jù)
//創(chuàng)建管理者
AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];
// 自定義AFN響應(yīng)者對(duì)象
AFJSONResponseSerializer*responseSerializer = [AFJSONResponseSerializerserializer];
responseSerializer.acceptableContentTypes= [NSSetsetWithObject:@"text/html"];
manager.responseSerializer= responseSerializer;
6.解析數(shù)據(jù)(寫成plist)
為什么要寫成plist文件? ? ?為了方便我們讀取數(shù)據(jù)的層次結(jié)構(gòu),分析數(shù)據(jù)解析的方法
7.設(shè)計(jì)模型(界面需要什么數(shù)據(jù),就定義什么數(shù)據(jù))
8.字典轉(zhuǎn)模型 (MJExtension)
9.把模型顯示到界面上
怎么做?
9.1 在cell里面定義模型屬性來(lái)接收模型數(shù)據(jù)
9.2 在cell里面定義要接收數(shù)據(jù)的屬性
9.3 重寫模型屬性的set方法
9.4 給需要接收數(shù)據(jù)的參數(shù)賦值
10.點(diǎn)擊廣告跳轉(zhuǎn)
10.1 怎么設(shè)計(jì)?
想要點(diǎn)擊做一些事情,可以添加點(diǎn)按手勢(shì)
10.2 手勢(shì)添加給誰(shuí)?
我們想要點(diǎn)擊廣告圖片跳轉(zhuǎn)到廣告界面 ? ?點(diǎn)按手勢(shì)可以添加給圖片
10.3 在哪里添加點(diǎn)按手勢(shì)(寫代碼)?
在AFN發(fā)送網(wǎng)絡(luò)請(qǐng)求成功時(shí),我們可以拿到圖片 ? ?在這里寫代碼
10.4 怎么跳轉(zhuǎn)界面(打開(kāi)URL)?
可以利用[[UIApplicationsharedApplication]openURL:URL];
注意:在打開(kāi)url之前要做一次判斷:[[UIApplication sharedApplication] canOpenURL:URL];
11.廣告倒計(jì)時(shí)
11.1 為什么要做廣告倒計(jì)時(shí)?
為了方便用戶不看廣告,直接跳過(guò)廣告
11.2 怎么做?
可以利用_timer=? [NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(timeChange)userInfo:nilrepeats:YES];
11.3 計(jì)時(shí)器聲明時(shí)候結(jié)束?
當(dāng)計(jì)時(shí)器讀秒為0 的時(shí)候結(jié)束 ? ? 結(jié)束之后就要跳轉(zhuǎn)到主界面
11.4 怎么判斷讀秒?
給按鈕設(shè)置一個(gè)廣告時(shí)間 ? 一般以秒為單位, 計(jì)時(shí)器每工作一次,時(shí)間就減1秒
11.5 注意: 跳轉(zhuǎn)主界面的時(shí)候,計(jì)時(shí)器就沒(méi)用了,一定要關(guān)閉定時(shí)器
11.6 怎么跳轉(zhuǎn)界面?
跳轉(zhuǎn)界面方法: modal ?push ? ? ? ?設(shè)置窗口根控制器
modal ?push方法,廣告界面控制器不會(huì)銷毀 ?一直存在 ? 消耗內(nèi)存
設(shè)置窗口跟控制器會(huì)把之前的控制器銷毀
[UIApplicationsharedApplication].keyWindow.rootViewController= tabBarVC;
總結(jié):
1.每個(gè)界面開(kāi)發(fā)流程:1.搭建界面 2.請(qǐng)求數(shù)據(jù)(1.查看接口文檔) 3.解析數(shù)據(jù)(設(shè)計(jì)模型) 4.字典轉(zhuǎn)模型 5.把模型展示到界面上