關(guān)于開屏圖LaunchImage的坑

最近遇到了兩個開屏圖開發(fā)的小小問題。記錄下來,方便自己以后查看回顧,也方便可能會遇到的朋友。

1.開屏圖必須按機型放置對應(yīng)尺寸的LaunchImage

因為在launchImage展示期間會獲取屏幕分辨率,所以錯誤的尺寸會導致獲取屏幕分辨率錯誤,從而導致所有字體變大/播放器獲取寬高錯誤等問題。所以如果遇到類似問題,代碼層面沒有問題的時候,可以查看launchImage的尺寸是否有錯誤。

2.弱網(wǎng)環(huán)境下開屏廣告展示在首頁出現(xiàn)之后

開屏廣告通常是一張?zhí)砑釉趙indow上的imageView,弱網(wǎng)環(huán)境下因為圖片下載慢就有可能出現(xiàn)開屏廣告展示在首頁出現(xiàn)之后的情況。
這種情況下,可以把LauncImage作為背景圖建一個viewcontroller,先用這個viewcontroller作為首頁,廣告展示完成后再替換為真正的首頁。這種情況下一定要注意亮點

·避免因廣告圖片下載不成功導致卡死在LaunchImage,所以出了要在圖片下載完成展示的回調(diào)中更改首頁,還要設(shè)置一個超時時間,超過某個時間就要強制進入首頁。
·如果app的首頁是禁止橫屏的,那要注意這個LauncImage作為背景圖的viewcontrolle也要禁止橫屏,否則在啟動的時候橫置手機,首頁就會橫屏顯示,如果沒有適配,就會導致UI錯亂。

LaunchViewController.m

@implementation YSLaunchViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UIImageView *lauchImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, YSAppScreenWidth, YSAppScreenHeight)];
    lauchImage.image = [UIImage imageNamed:@"home_launch"];
    [self.view addSubview:lauchImage];
}

// 如果沒有設(shè)置整個app禁止橫屏,一定要在這里設(shè)置改VC禁止橫屏,否則進入首頁會導致首頁橫屏
- (BOOL)shouldAutorotate{
    return NO;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskPortrait;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
// 可以通過發(fā)送通知或者其他方式更改rootViewController
[[NSNotificationCenter defaultCenter] postNotificationName:@"NeedChangeHomePage" object:nil];
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 在didFinishLaunchingWithOptions中接收更改rootViewController的通知(已省略其他無關(guān)代碼)
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showHomePage:) name:@"NeedChangeHomePage" object:nil];

    // 設(shè)置rootViewController為LaunchImage
    LaunchViewController *lauchVC = [[LaunchViewController alloc] init]; // LaunchImage為背景的VC
    self.window.rootViewController = lauchVC;
    return YES;
}

-(void)showHomePage:(NSNotification *)notifa {
// 如果rootViewController不是首頁,進行替換
    if (![self.window.rootViewController isKindOfClass:[MainViewController class]]) {
        self.window.rootViewController = [[MainViewController alloc] init];
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從事移動廣告商業(yè)變現(xiàn)多年,總是覺得產(chǎn)品與商務(wù)的同事是一對“歡喜冤家”。站在開發(fā)者的角度,關(guān)注用戶體驗最優(yōu)是無可厚非...
    游社長閱讀 9,064評論 2 78
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,397評論 4 61
  • 簡單的說 Node.js 就是運行在服務(wù)端的 JavaScript。Node.js 是一個基于Chrome Jav...
    張鴿閱讀 251評論 0 2
  • “咚咚咚!” “啊啊啊誰啊(睡眼朦朧)” “媽呀8:26了?。?!” “真的假的.” “真的呀?。?!” “啊啊啊啊啊...
    xiaoNancy閱讀 269評論 0 1
  • 寶貝!活在當下覺知每一個當下的發(fā)生,負荷就在消融,靈魂就在提升。我們過去老是無意識,其實修行特別簡單,就是變得有意...
    李嘉睿閱讀 538評論 0 0

友情鏈接更多精彩內(nèi)容