JWXIAN / JWLaunchAd

一行代码集成启动页广告,同时支持Storyboard和LaunchImage,支持Gif,自带图片下载缓冲,无负担集成.
Apache License 2.0
133 stars 26 forks source link

刚进来会先显示一下根控制器 #3

Open tzhanbaobei opened 8 years ago

tzhanbaobei commented 8 years ago

刚进来会先显示一下根控制器显示广告,应该先显示广告页再跳进根控制器

JWXIAN commented 8 years ago

Storyboard还是LaunchImage? 方便贴下代码吗?

WangPengShuai commented 7 years ago

遇到同样的问题

koshuijuduo123 commented 7 years ago

图片如果是通过afn请求来的,就会出现闪现一下根视图,再出现启动图,我吧afn请求并到了初始化启动图的方法里,还是有这种问题

nenhall commented 7 years ago

确实存在:会先显示一下根控制器,因为你addsubview是在异步导致的,代码改成如下就好了,还有使用时候需要把初始化放在初始化window.rootViewController 之前:

-(void)addInWindow{
    //监测DidFinished通知
    [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
        //等DidFinished方法结束后,将其添加至window上(不然会检测是否有rootViewController)
        [[[UIApplication sharedApplication].delegate window] performSelectorOnMainThread:@selector(addSubview:) withObject:self waitUntilDone:YES];
//        dispatch_async(dispatch_get_main_queue(), ^{//用上面的方法添加,不要使用异步
//            [[[UIApplication sharedApplication].delegate window] addSubview:self];
//        });
    }];
}
ZClee128 commented 7 years ago

怎么解决这个问题,能完整给出代码吗

koshuijuduo123 commented 7 years ago

作者回答的很清楚喽,就是将addInWindow方法内原本异步加载的改为阻塞当前线程

fanruoyang commented 7 years ago

我网上请求数据的时候就不走这个方法了,如果是本地的图就没问题

nenhall commented 7 years ago

@koshuijuduo123 不用阻塞,按我的方法,亲测有效