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