1. 程式人生 > >iOS開發筆記之十二——啟動logo畫面的設定

iOS開發筆記之十二——啟動logo畫面的設定

1、需求介紹

      一個正規的手機APP,都會有啟動Logo畫面,有時候會在啟動畫面載入一定的廣告,例如騰訊新聞、網易新聞;這些APP都會有自己的啟動Logo畫面。設計一個體檢較佳的啟動畫面往往是開發優秀APP的第一步。

2、啟動畫面的實現

      一個完成的啟動畫面應分為兩部分,第一部分IOS系統啟動,這個啟動的畫面伴隨著APP的啟動;第二個畫面是APP自定義畫面,這個畫面往往伴隨著APP的資料初始化、登入等APP初始化工作。這時候啟動畫面可以是Logo畫面,也可以載入廣告圖片。下面分別介紹這兩部分的實現。

第一階段:

      載入時間:這個階段是系統在載入應用,這個階段載入的啟動畫面預設是1秒,如果想要延長這個階段的時間,可以採取下面方法:

在AppDelegate.m里加入執行緒延遲

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    [NSThreadsleepForTimeInterval:2];

    ...........

}

     Logo圖片的載入:首先需要設定以下選項:

選項設定後,APP就會從資源目錄裡查詢Default.png圖片進行載入。針對不同的解析度,會有不同的圖片選擇:

iPhone 4 320x480               ------->Default.png

iPhone 4s 640x960             ------->[email protected]

iPhone 5/5s 640x1136        -------->[email protected]

IPAD對應不同的Iphone手機。

第二階段:

       自定義啟動畫面一般是在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中實現。

我們工程專案裡在這個方法中開始載入自己的畫面LogoViewController,在LogoViewController裡面,進行了廣告的載入,如果沒有廣告資料,則繼續

預設Logo圖片的載入。讓第一階段第二階段看起來只有一張圖片。載入廣告時,直接顯示廣告圖片,但是再次載入原來的Logo讓這兩個階段無縫結合

有點麻煩。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

     .........

     LogoViewController* wLogVC = [[LogoViewController alloc] initWithMainWindow:self.window];

     .........

}

在LogoViewController中,需要根據不同的裝置載入不同的圖片,目前iPhone手機尺寸主要是iPhone 4/4s和Iphone 5/5s,如果不考慮不同的機型以及Retina螢幕問題,會出現Logo圖片“閃調”的現象,這樣的Logo載入是良好的使用者體驗無法容忍的。

程式碼中根據不同的裝置進行判斷載入不同的Logo圖片;

   if(wAdsData != nil)
   {
        //載入廣告圖片

        ......
   }
   else
   {
        if (568 == frameHeight)
        {
            logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"[email protected]"]];
        }
        if (480 == frameHeight)
        {
            if (IS_RETINA)
            {
                 logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"[email protected]"]];
            } else
            {
                 logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
            }

        }


        [self addSubview:logoImageView];
    }

其中Retina螢幕的判斷:

#define IS_RETINA  ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))

 然而即使這樣,仔細的觀察還是隱約能夠看到兩個階段之間有略微的閃過。

3、參考資料

相關推薦

iOS開發筆記——啟動logo畫面設定

1、需求介紹       一個正規的手機APP,都會有啟動Logo畫面,有時候會在啟動畫面載入一定的廣告,例如騰訊新聞、網易新聞;這些APP都會有自己的啟動Logo畫面。設計一個體檢較佳的啟動畫面往往是開發優秀APP的第一步。 2、啟動畫面的實現       一個完成的啟動

PID控制器開發筆記:模糊PID控制器的實現

poi 技術 last 全部 arr linear 數值 .com 數據   在現實控制中,被控系統並非是線性時不變的,往往需要動態調整PID的參數,而模糊控制正好能夠滿足這一需求,所以在接下來的這一節我們將討論模糊PID控制器的相關問題。模糊PID控制器是將模糊算法與PI

iOS開發筆記八——檢視靜態庫檔案支援的arm64指令集架構的方法

1、蘋果store馬上就要開始對上架的app實行64位支援檢查了,截至到2015年2月1日。我們團隊維護開發的產品已經收到警告了, 工程裡用到了很多第三方的SDK,而這些SDK有的還不支援64位指令集。要從網上檢索最新的SDK並檢查是否支援64位架構,本篇文章就是介紹 怎樣

iOS開發筆記九——一個關於工程目錄讀寫許可權的問題

1、從網際網路上或者其他途徑拿過來的工程程式碼,往往會報下面的提示:   (1)開啟檔案的時候出現視窗提示You don’t have permission to save the file “project.xcworkspace” in the folder “**

iOS開發筆記六——輕量級元件化路由方案XYPageMaster(

******閱讀完此文,大概需要20分鐘****** 一、專案原始碼 XYPageMaster是為了實現VivaVideo家族產品元件化的輕量級Router解決方案,有了它業務頁面之間的跳轉不在相互依賴,在業務專案之間解耦起到重要作用。在開發過程中,XYPageMaste

【Visual C++】遊戲開發筆記 淺墨DirectX教程 遊戲輸入控制利器:DirectInput專場

本系列文章由zhmxy555(毛星雲)編寫,轉載請註明出處。  ----------------------------------------------------------------------------------------------------------

iOS開發筆記七——多執行緒場景下的KVO使用參考方案

如果你取檢索網路資料會發現,有人直接不建議把KVO與多執行緒混合使用,因為KVO的響應和KVO觀察的值變化是在一個執行緒上的,不同的執行緒可能會導致不可預知的後果。參考資料見這裡: 當然,場景總是千變萬化的,下面我就介紹一種多執行緒下使用KVO的場景。 具體場景如

iOS開發筆記四——FRP與RAC進階篇(資料黑白板XYReactDataBoard的介紹)

******閱讀完此文,大概需要30分鐘****** 一、簡介 XYReactDataBoard是一款已經比較成熟的基於RAC的響應式程式設計元件,它主要用來實現任意模組之間的資料通訊,它可以替代原生的Notification、KVO,delegate、NSUserdef

iOS開發筆記八——gem、brew、rvm、bundle的相關介紹

一、相關概念 1、GEM的概念 gem其實就是RubyGems,RubyGems是一個包管理框架,提供了ruby社群的gem的託管服務,用於ruby軟體包的下載、安裝、使用;ruby的軟體包被稱為gem,包含了ruby應用或庫。 安裝RubyGems需要先下載安裝包

《SAS編程與數據挖掘商業案例》學習筆記

style rename today 降序排序 cat list append span nod 本次重點在:sas數據集管理 主要包含:包含數據集縱向拼接、轉置、排序、比較、復制、重命名、刪除等 1.append語句 註:base數據集

Java開發筆記)布林變數論道與或非

在程式語言的設計之初,它們除了可以進行數學計算,還常常用於邏輯推理和條件判斷。為了實現邏輯判斷的功能,Java引入了一種布林型別boolean,用來表示“真”和“假”。該型別的變數只允許兩個取值,即true和false,其中true對應真值,而false對應假值。 如同數值變數擁有加減乘

【Visual C++】遊戲開發筆記一 基礎動畫顯示(四) 排序貼圖

                ------------------------------------------------------------------------------------------------------------------------------淺墨歷時一年為遊戲程式設計

【Visual C++】遊戲開發筆記 基礎動畫顯示(三) 透明動畫的實現

                作者:毛星雲    郵箱: [email protected]    歡迎郵件交流程式設計心得"透明動畫”是遊戲中一定會用到的基本技巧,它通過圖案的連續顯示及圖案本身背景的透明化處理,在背景圖上產生出栩栩如生的動畫效果。看過之前筆記的朋友們應該知道,在筆記六裡我們介紹

kubernetes學習筆記:資源指標API及自定義指標API

第一章、前言 以前是用heapster來收集資源指標才能看,現在heapster要廢棄了從1.8以後引入了資源api指標監視 資源指標:metrics-server(核心指標) 自定義指標:prometheus,k8s-prometheus-adapter(將Prometheus採集的資料轉換為指

機器學習筆記——SVM原理及推導

svm(support vector machine)是一種二分類演算法,它的目標在於尋找一個能將兩種點分離的直線或平面或超平面。 如圖(來自wiki): 圖中的紅線將兩邊資料點分開,這條線就是分割直線,同樣的,在三維座標軸中,將兩邊資料點分開的平面,稱為分割平面;更高維的空間座標軸,

Java Web 學習筆記:JBoss RestEasy處理跨域OPTIONS請求方式

跨域請求問題 前提 前後端分離的B/S架構系統 前後端獨立開發,後端採用JBoss restEasy 框架搭建restful服務 後端程式碼開發完成並且部署在某一臺測試機上 前端開發過程中,需

Effective C++讀書筆記:複製物件時勿忘其每一個成分

class Date{...}; class Customer { public: ... private: std::string name; Date lastTransaction; }; class PriorityCustomer:public Customer { public: Pri

iOS開發筆記Xcode9.2下SDK開發-生成Framework的圖解流程

1.Workspace可以方便SDK與Demo的聯調,首先建立一個Workspace:2.建立Framework:選擇Cocoa Touch Framework:加入之前建立的SDKWorkspace,點選Create:3.建立SDKDemo:再次新建Project,選擇Si

iOS開發筆記--如何自定義啟動畫面Default.png載入時間

Default.png圖片顯示時間和機器載入應用的速度成正比,載入越快,顯示時間越短,載入越慢,顯示時間越長,如果感覺太快的話,可以用下面的方法自定義顯示載入時間。 在AppDelegate.m里加入執行緒延遲 - (BOOL)application:(UIApplic

iOS開發筆記跳轉QQ聊天頁、跳轉微信、應用內撥打電話

NSURL *url; // QQ url = [NSURL URLWithString:[NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_typ