這就是 封裝 ? iOS 啟動(dòng)頁

iOS 啟動(dòng)廣告頁思路输瓜,直接 push瓦胎,首頁不出現(xiàn),上海華新鎮(zhèn)風(fēng)味

PM 提了個(gè)需求尤揣,啟動(dòng)廣告界面點(diǎn)擊了搔啊, 就直接進(jìn),不需要閃一下主界面北戏。

要這種

實(shí)現(xiàn)的思路负芋,多 window 模式

一般的廣告界面就是 Key Window 上面的遮罩(子視圖)。
要從廣告界面 push嗜愈,自然廣告界面就是一個(gè)控制器了旧蛾。
提升廣告界面的層級莽龟,才可以。

我提升到了 window 級別蚜点。
如果使用的是控制器轧房, 單 window (就是系統(tǒng)的), 然后切換就是 [UIApplication sharedApplication].keyWindow.rootViewController = ...

兩點(diǎn)考慮:
1, 切換即重新創(chuàng)建绍绘, 從廣告到首頁奶镶。
我希望首頁早加載,就必須給首頁一個(gè) window 容器陪拘。
2厂镇,首頁轉(zhuǎn)登錄,登錄再轉(zhuǎn)首頁
之前項(xiàng)目用的是切 keyWindow 的 rootViewController左刽, 然后首頁就丟了捺信,拿不到。登錄邏輯中欠痴,新建一個(gè)迄靠,我覺得比較可惜。
使用多 window , 拿回首頁喇辽,可以在內(nèi)存上復(fù)用掌挚。


@interface AppDelegate 

//  主流程
@property (strong, nonatomic) UIWindow *window;
// 廣告
@property (strong, nonatomic) UIWindow *adWindow;
// 登錄
@property (strong, nonatomic) UIWindow *loginWindow;


@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc] init];
    self.window.frame = [UIScreen mainScreen].bounds;
    
    
    
    UITabBarController * tabBarController = [[UITabBarController alloc] init];
    tabBarController.view.backgroundColor = UIColor.redColor;
    self.window.rootViewController = tabBarController;
    
    
    self.adWindow = [[UIWindow alloc] init];
    self.adWindow.frame = [UIScreen mainScreen].bounds;
    self.adWindow.rootViewController = [[UINavigationController alloc] initWithRootViewController: [[AdvertiseViewController alloc] init]];;
    [self.adWindow makeKeyAndVisible];
    return YES;
}

采用了三個(gè) window, 一個(gè)主流程,一個(gè)廣告菩咨, 一個(gè)登錄吠式,
KeyAndVisible 的是廣告 window.
( 項(xiàng)目原因,廣告都是實(shí)時(shí)請求抽米。不是市面上的異步緩存特占,下次使用。 華新鎮(zhèn)風(fēng)味)

問題就是如果廣告倒計(jì)時(shí)三秒云茸,用戶沒有點(diǎn)擊是目,

注意事項(xiàng):

需要在 Target 的 General 選項(xiàng)卡中, 指定 Main Interface 為空标捺。
建議刪除 main.storyboard.

因?yàn)閱?dòng)的時(shí)候切換 window, 就不能走 main.storyboard 了.

launch_delete_main

未實(shí)現(xiàn)的思路

缺點(diǎn):

沒有轉(zhuǎn)場動(dòng)畫 transition
內(nèi)存管理胖笛, 因?yàn)橛脩艨吹降?window 只有一個(gè)。
廣告業(yè)務(wù)處理完后宜岛,切換回首頁 window, 就應(yīng)該釋放廣告 window.
( 廣告 window 是 appDelegate 的屬性长踊,appDelegate 是單例, 所以 appDelegate 的廣告 window 屬性萍倡,初始化后身弊,會(huì)一直都存在)
在這個(gè)時(shí)機(jī)寫, appDelegate.adWindow = nil, 就會(huì)黑光一閃。
這肯定是不行的阱佛。
需要在之后找地方釋放帖汞,代碼會(huì)亂一些。

產(chǎn)品說:不要這種

iOS 啟動(dòng)廣告界面凑术,一般是在 window 上添加子視圖翩蘸。

    UIWindow *window = [UIApplication sharedApplication].delegate.window;
    [window addSubview: self];

廣告界面就是首頁 rootViewController ( 或者其子 Controller )上面的遮罩。點(diǎn)擊廣告頁淮逊,一般是通知首頁的 topViewController push 出廣告的內(nèi)容控制器催首。

一般的 App 啟動(dòng)加載廣告頁面思路都是這么寫的。 這篇不錯(cuò)泄鹏。

這種思路挺好的郎任,一般的廣告界面的 link 是 deep link, 與 app 強(qiáng)交互,先把整個(gè) app 的框架(首頁)加載出來备籽,再進(jìn)入業(yè)務(wù)層舶治。

大方

我看了一下喜馬拉雅的效果,也覺得挺好的车猬。

華新鎮(zhèn)的產(chǎn)品經(jīng)理很硬霉猛。

相關(guān)代碼: https://github.com/BoxDengJZ/solution_launch_UI

其他技術(shù)點(diǎn):

可以網(wǎng)絡(luò)請求異步發(fā)起,下次使用珠闰,AFNetworking 的事情韩脏。
圖片緩存策略,SDWebImage 的事情铸磅。



??

??

封裝 ,除了 數(shù)據(jù)是 只讀 的杭朱。
數(shù)據(jù) 通過 操作 修改阅仔。

還有 一種類的 層級關(guān)系。
對象 的 屬性弧械,不能 跨越 層級八酒,直接訪問到。
必須是刃唐, 一級一級 訪問羞迷。修改

//self.orderDetailInfo.packageList[i].productList[j] = [OrderDetailProduct yy_modelWithDictionary: orderDetailProduct];

[HttpRequestManager getOrderDetailParams:requestDic success:^(id response, id data, NSString *Message) {
        [MBProgressHUD hideHUD];
        NSDictionary *responseDic = (NSDictionary *)data;
        OrderDetail * orderDetailInfo = [OrderDetail yy_modelWithDictionary: responseDic];
        self.orderDetailInfo = orderDetailInfo;
      //  NSInteger i = 0;
        NSMutableArray * tempOrders = [[NSMutableArray alloc] initWithCapacity: orderDetailInfo.packageList.count];
        for (OrderPackageList * orderPackageList in orderDetailInfo.packageList) {
            OrderPackageList * tempPackageList = orderPackageList;
         //   NSInteger j = 0;
            NSMutableArray * tempProducts = [[NSMutableArray alloc] initWithCapacity: orderPackageList.productList.count];
            for (NSDictionary * orderDetailProduct in orderPackageList.productList) {
                
                //self.orderDetailInfo.packageList[i].productList[j] = [OrderDetailProduct yy_modelWithDictionary: orderDetailProduct];
                OrderDetailProduct * tempDetailProduct = [OrderDetailProduct yy_modelWithDictionary: orderDetailProduct];
                [tempProducts addObject: tempDetailProduct];
              //  j++;
            }
            tempPackageList.productList = tempProducts;
            [tempOrders addObject: tempPackageList];
           // i++;
        }
        self.orderDetailInfo.packageList = tempOrders;
        [self.orderDetailTableView reloadData];

??

??

??

Mock ,
在 客戶端 測試 Server 邏輯,
在 移動(dòng)端 直接 修改 數(shù)據(jù)画饥,
同樣有 Mock 的 效果衔瓮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抖甘,隨后出現(xiàn)的幾起案子热鞍,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薇宠,死亡現(xiàn)場離奇詭異偷办,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)澄港,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門椒涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人回梧,你說我怎么就攤上這事废岂。” “怎么了漂辐?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵泪喊,是天一觀的道長。 經(jīng)常有香客問我髓涯,道長袒啼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任纬纪,我火速辦了婚禮蚓再,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘包各。我一直安慰自己摘仅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布问畅。 她就那樣靜靜地躺著娃属,像睡著了一般。 火紅的嫁衣襯著肌膚如雪护姆。 梳的紋絲不亂的頭發(fā)上矾端,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音卵皂,去河邊找鬼秩铆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灯变,可吹牛的內(nèi)容都是我干的殴玛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼添祸,長吁一口氣:“原來是場噩夢啊……” “哼滚粟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刃泌,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤坦刀,失蹤者是張志新(化名)和其女友劉穎愧沟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲤遥,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沐寺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盖奈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片混坞。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钢坦,靈堂內(nèi)的尸體忽然破棺而出究孕,到底是詐尸還是另有隱情,我是刑警寧澤爹凹,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布厨诸,位于F島的核電站,受9級特大地震影響禾酱,放射性物質(zhì)發(fā)生泄漏微酬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一颤陶、第九天 我趴在偏房一處隱蔽的房頂上張望颗管。 院中可真熱鬧,春花似錦滓走、人聲如沸垦江。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽比吭。三九已至,卻和暖如春姨涡,著一層夾襖步出監(jiān)牢的瞬間衩藤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工绣溜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人娄蔼。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓怖喻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親岁诉。 傳聞我的和親對象是個(gè)殘疾皇子锚沸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法涕癣,內(nèi)部類的語法哗蜈,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理距潘,服務(wù)發(fā)現(xiàn)炼列,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,958評論 6 13
  • 今早好幸運(yùn),不緊不慢地走出來之后趕上了345洞翩,坐上了位置還滿足地睡上一覺稽犁,幸運(yùn)! 想告訴自己的是:不要被雜念干擾骚亿,...
    小火棍閱讀 267評論 0 0
  • 只為金錢而結(jié)婚的人其惡無比已亥; 只為戀愛而結(jié)婚的人其愚無比。 吶来屠,我就這個(gè)愚人虑椎。當(dāng)年為了所謂的愛情,執(zhí)著的像個(gè)殺紅眼...
    芒果豆豆閱讀 171評論 0 0