最近在做個(gè)人熱點(diǎn)適配,發(fā)現(xiàn)在個(gè)人熱點(diǎn)連接狀態(tài)下如果導(dǎo)航欄不隱藏,App啟動(dòng)圖會(huì)有一個(gè)Bug,看了看現(xiàn)在流行的應(yīng)用,發(fā)現(xiàn)好多都有這個(gè)問(wèn)題,雖然只是一閃而過(guò)用戶很可能都發(fā)現(xiàn)不了,但是我感覺(jué)還是處理一下比較好。大家還是看看效果吧。
淘寶
京東
餓了么
簡(jiǎn)書
從這幾個(gè)應(yīng)用來(lái)看啟動(dòng)圖的中心像是被折疊起來(lái)了,這個(gè)算是蘋果的Bug。解決這個(gè)問(wèn)題只讓App啟動(dòng)時(shí)隱藏狀態(tài)欄就行了。

隱藏狀態(tài)欄
但是這樣還是有一個(gè)問(wèn)題,拿滴滴出行舉個(gè)例子

滴滴出行1.png

滴滴出行2.png
滴滴出行在沒(méi)有廣告界面的時(shí)候,啟動(dòng)應(yīng)用會(huì)從圖1的狀態(tài)變?yōu)閳D2的狀態(tài),時(shí)間很短,但是還是感覺(jué)用戶體驗(yàn)不好。以下是我個(gè)人的解決辦法。
首先我們需要獲取啟動(dòng)圖片,給UIImage添加一個(gè)分類方法
/*
* 獲取App啟動(dòng)圖片
*/
+ (instancetype)getLauchImage {
NSString *launchImage = nil;
NSArray *imageDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
for (NSDictionary * dict in imageDict) {
launchImage = dict[@"UILaunchImageName"];
}
return [UIImage imageNamed:launchImage];
}
然后在viewDidAppear中present一個(gè)控制器,_isHotSpot是防止死循環(huán)的,并且是在熱點(diǎn)連接的狀態(tài)下才present(實(shí)際上是通過(guò)用啟動(dòng)圖片擋住這種從圖1轉(zhuǎn)換成圖2的視覺(jué)效果,說(shuō)白了就是欺騙用戶,哈哈)。
/*
* 只能在viewDidAppear執(zhí)行才有效果
*/
- (void)viewDidAppear:(BOOL)animated {
if (_isHotSpot == NO && [UIApplication sharedApplication].statusBarFrame.size.height == 40) {
BWV *vc = [[BWV alloc] init];
[self presentViewController:vc animated:NO completion:^{
UIImageView *imgview = [[UIImageView alloc] initWithFrame:self.view.bounds];
imgview.image = [UIImage getLauchImage];
[vc.view addSubview:imgview];
[vc.view bringSubviewToFront:imgview];
}];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[vc dismissViewControllerAnimated:NO completion:nil];
});
});
_isHotSpot = YES;
}
}
如果你有更好的辦法一定要分享給大家哦!