1. 程式人生 > >iOS -- LaunchScreen歡迎介面動畫效果

iOS -- LaunchScreen歡迎介面動畫效果

  為什麼會出現歡迎介面?

程式在啟動的過程中需要消耗一些時間,那麼在加載出現主介面之前,會出現短暫的黑屏,這實在是很糟糕的一件事情,會給使用者一個非常不好的體驗。為了緩解使用者等待過程中心理的不適與煩躁,歡迎介面閃亮登場了!

用歡迎介面來替代黑屏的等待,可以有效的掩蓋耗時阻塞的後臺操作,還能向用戶展示有效的資訊,是非常好的一種過渡方案。但是有的程式把歡迎介面做成了廣告版,浪費了使用者更多的時間,讓使用者覺得厭煩,對程式本身功能也失去了興趣,這種做法實在是很不明智。

歡迎介面的種類?

歡迎介面種類有很多,大致分為靜態和動態兩種。

靜態的歡迎介面通常比較簡潔,一般會放置一張很精美的圖片,可能是一張公司或者產品的宣傳圖,也可能是一張廣告圖。可以使用LaunchImage和LaunchScreen.storyboard設定靜態的歡迎介面

   動態的歡迎介面。程式執行起來,歡迎介面之後,會進入AppDelegate,因此我們可以在application: didFinishLaunchingWithOptions:新增程式碼完成想要的效果。

   方法:

   可以直接利用LaunchScreen.xib中得view,在上面新增一個UIImageView顯示圖片,然後將其加在window上,並顯示在最上層。廣告圖片顯示之後,再將view移除掉,顯示程式的主介面。

   程式碼如下:

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

*)launchOptions {

    [self.windowmakeKeyAndVisible];

lunchView = [[NSBundlemainBundle ]loadNibNamed:@"LaunchScreen"owner:niloptions:nil][0];

lunchView.frame = CGRectMake(0, 0, self.window.screen.bounds.size.width, self.window.screen.bounds.size.height);

    [self.windowaddSubview:lunchView];

    UIImageView

*imageV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50, 320, 300)];

NSString *str = @"http://club.dayoo.com/club_data/upload_photo/rtys/2008/07/21/988/2473.gif"; [imageV sd_setImageWithURL:[NSURLURLWithString:str] placeholderImage:[UIImageimageNamed:@"default1.jpg"]];

    [lunchView addSubview:imageV];

    [self.windowbringSubviewToFront:lunchView];

    [NSTimerscheduledTimerWithTimeInterval:6target:selfselector:@selector(removeLun) userInfo:nilrepeats:NO];

return YES;

}

-(void)removeLun {

    [lunchViewremoveFromSuperview];

}

載入本地的gif圖片可以使用SDWebImage這個第三方框架:方法如下

UIImage *image = [UIImagesd_animatedGIFNamed:@"啟動圖"];

    UIImageView *gifView = [[UIImageView alloc] initWithFrame:CGRectMake(40, 80, image.size.width, image.size.height)];

    gifView.backgroundColor = [UIColororangeColor];

    gifView.image = image;

    [self.view addSubview:gifView];

存在的問題:

這樣寫,程式啟動時仍會出現一個空白的頁面,這個空白頁面結束後才會走didFinishLaunchingWithOptions:此方法裡的程式碼。

暫時不知道怎麼消除預設空白頁。