當咱們打開一款應用程序的時候,首先映入眼簾的每每並非程序的主界面,而是通過精心設計的歡迎界面,這個界面一般會停留幾秒鐘,而後消失。看似很日常的一個小小的歡迎界面,其實還大有講究。web
1、爲何會出現歡迎界面? |
程序在啓動的過程當中須要消耗一些時間,那麼在加載出現主界面以前,會出現短暫的黑屏,這實在是很糟糕的一件事情,會給用戶一個很是很差的體驗。爲了緩解用戶等待過程當中心理的不適與煩躁,歡迎界面閃亮登場了!app
用歡迎界面來替代黑屏的等待,能夠有效的掩蓋耗時阻塞的後臺操做,還能向用戶展現有效的信息,是很是好的一種過渡方案。可是有的程序把歡迎界面作成了廣告版,浪費了用戶更多的時間,讓用戶以爲厭煩,對程序自己功能也失去了興趣,這種作法實在是很不明智。iphone
2、歡迎界面的種類 |
歡迎界面種類有不少,大體分爲靜態和動態兩種。動畫
靜態的歡迎界面一般比較簡潔,通常會放置一張很精美的圖片,多是一張公司或者產品的宣傳圖,也多是一張廣告圖,給我印象最深的是某聊天軟件在生日當天打開,歡迎界面居然是一張寫着你名字的生日祝福的圖片,讓人感受很溫暖。atom
動態的歡迎界面要更加炫酷精美,樣式也更加豐富,有的是聯網加載的廣告,有的像一本很炫的書,能夠滑動翻頁,有的是一個小小的遊戲,有的是美文配着美妙的音樂,還有的多是一段有趣的動畫。spa
3、歡迎界面使用LaunchImage |
針對IOS7,蘋果提供了LaunchImage來實現歡迎界面,開發的時候只須要將設計好對應尺寸的圖片拖到對應的狀態的位置便可。設計
在IOS7,歡迎界面對應的尺寸分別爲:code
iphone 豎屏 640*960 640*1136orm
ipad 豎屏 768*1024 1536*2048blog
ipad 橫屏 1024*768 2028*1536
IOS8出現以後,蘋果推出了LaunchScreen.xib來作歡迎界面,若是還想經過LaunchImage來作歡迎界面,完美適配IOS7和IOS8,應該如何來作呢?
首先,須要把LaunchScreen.xib刪掉,不然IOS8時會自動調用它。而後找到Images.xcassets,點擊下面的 + 號,選擇New Launch Image,而後按照對應的要求放入相應尺寸圖片便可,和以前操做徹底同樣。
4、歡迎界面使用LaunchScreen.xib |
Xcode6/IOS8新添加了許多功能,好比LaunchScreen.xib、Size Classes等。程序啓動的時候,會自動調用LaunchScreen.xib,所以能夠在這個xib上添加須要顯示的控件,並添加約束,進行顯示。
如上圖所示,當前歡迎界面包括中間的大標題,下面的公司信息等,和一張圖片。由於上面的控件都是在Any w和Any h的狀況下添加的約束,因此不管在哪一種尺寸的設備上均可以適配。爲了保證更完美的效果,xib中得圖片咱們可使用Images.xcassets來設置,這樣能夠在不一樣設備的時候自動選擇相應尺寸的圖片,達到更好的效果。
上面的LaunchScreen.xib是使用Xcode6建立項目自動生成的,若是不想使用自動生成的,也能夠換成其餘的xib,可是很遺憾,用於作歡迎界面的xib無法與View Controller連線,所以只能顯示靜態的事先擺好的界面。換xib能夠在下圖兩個地方進行更換。
5、歡迎界面動態加載廣告 |
有許多應用程序在打開的時候,歡迎界面會加載一張連網獲取的廣告圖片或者顯示一組動畫,這樣的效果是如何作到的呢?下面給你們介紹一種簡單的實現加載廣告的方式。
程序運行起來,歡迎界面以後,會進入AppDelegate,所以咱們能夠在application: didFinishLaunchingWithOptions:添加代碼完成想要的效果。連網獲取圖片能夠用第三方SDWebImage實現,因此須要先將第三方文件夾導入。由於顯示廣告的頁面是在歡迎界面基礎上顯示的,所以能夠直接利用LaunchScreen.xib中得view,在上面添加一個UIImageView顯示圖片,而後將其加在window上,並顯示在最上層。廣告圖片顯示以後,再將view移除掉,顯示程序的主界面。代碼以下所示:
#import "AppDelegate.h" #import "UIImageView+WebCache.h" @interface AppDelegate () @property (strong, nonatomic) UIView *lunchView; @end @implementation AppDelegate @synthesize lunchView; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self.window makeKeyAndVisible]; lunchView = [[NSBundle mainBundle ]loadNibNamed:@"LaunchScreen" owner:nil options:nil][0]; lunchView.frame = CGRectMake(0, 0, self.window.screen.bounds.size.width, self.window.screen.bounds.size.height); [self.window addSubview:lunchView]; UIImageView *imageV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50, 320, 300)]; NSString *str = @"http://www.jerehedu.com/images/temp/logo.gif"; [imageV sd_setImageWithURL:[NSURL URLWithString:str] placeholderImage:[UIImage imageNamed:@"default1.jpg"]]; [lunchView addSubview:imageV]; [self.window bringSubviewToFront:lunchView]; [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(removeLun) userInfo:nil repeats:NO]; return YES; } -(void)removeLun { [lunchView removeFromSuperview]; }