本文首發(fā)地址
最近在搞項(xiàng)目的時(shí)候签杈,遇見(jiàn)一個(gè)問(wèn)題。
項(xiàng)目描述:
在程序啟動(dòng)的時(shí)候要檢查程序的版本升級(jí)沽一,就是在AppDelegate里有一個(gè)func區(qū)檢查版本升級(jí)盖溺。去強(qiáng)制或者選擇升級(jí)、并且必須還要獲取一個(gè)時(shí)間戳
铣缠,這個(gè)時(shí)間戳并且還在登錄的時(shí)候用到這個(gè)時(shí)間戳咐柜。
那么問(wèn)題就來(lái)了:
app在第一次啟動(dòng)的時(shí)候打開(kāi)就是登錄頁(yè)面,當(dāng)我們點(diǎn)擊登錄的時(shí)候攘残,極有可能在觸發(fā)登錄事件時(shí)拙友,這個(gè)獲取時(shí)間戳還沒(méi)有獲取到〖吖靠R牌酢!病曾!
解決問(wèn)題辦法:
我在登錄頁(yè)面上的當(dāng)前的Window
上添加了一個(gè)view牍蜂,并且在這個(gè)view上添加了一個(gè)和當(dāng)前view一樣大得UIImageView,這個(gè)上面的圖片就是我們?cè)O(shè)置的啟動(dòng)圖了泰涂。
當(dāng)在AppDelegate的網(wǎng)絡(luò)請(qǐng)求成功
下來(lái)的時(shí)候鲫竞,在發(fā)出一個(gè)通知
.登錄頁(yè)面接受廣播,在把當(dāng)前Window上得View從父視圖removeFromSuperview
掉逼蒙。
順便再解釋一下網(wǎng)絡(luò)上得設(shè)置辦法
[NSThread sleepForTimeInterval:2.0];
這個(gè)方法是可以控制啟動(dòng)頁(yè)的停留時(shí)間袜茧,是控制當(dāng)前主線程
的停止,你可以試著用個(gè)異步線程去試一下伴榔,根本沒(méi)用=富鳌!驳棱!TMD批什。想要單獨(dú)的暫停啟動(dòng)頁(yè)
這個(gè)方法是可以的。
上代碼:
AppDelegate
的代碼
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
UINavigationController * nvc = [[UINavigationController alloc] initWithRootViewController:[[MainViewController alloc]init]];
self.window.rootViewController = nvc;
[self updateVersion];
[self.window makeKeyAndVisible];
return YES;
}
// 檢查版版本更新
-(void)updateVersion {
NSUserDefaults * userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setValue:@"洲洲哥" forKey:USERID];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"-----------------AppDelegate----------------AppDelegate----------------");
NSDictionary *dict = @{@"KEYS":@"WANGHUIZHOU"};
// 發(fā)送接收成功的通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"installType" object:nil userInfo:dict];
});
}
loginViewCOntroller
代碼
// 宏定義得到當(dāng)前的Window
#define CurrentWindow [self getCurrentWindowView]
- (instancetype)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(installProcess:) name:@"installType" object:nil];
}
return self;
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"標(biāo)題";
self.launchView = [[UIView alloc] initWithFrame:self.view.bounds];
UIImageView * backImageView = [[UIImageView alloc] initWithFrame:self.launchView.bounds];
backImageView.image = [UIImage imageNamed:@"launch"];
[self.launchView addSubview:backImageView];
self.launchView.backgroundColor = [UIColor redColor];
[CurrentWindow addSubview:self.launchView];
}
-(void)installProcess:(NSNotification *)notification {
[UIView animateWithDuration:0.25 animations:^{
[self.launchView removeFromSuperview];
NSLog(@"-----END----%@",USERID);
}];
}
/**獲取當(dāng)前window*/
- (UIWindow *)getCurrentWindowView {
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
return window;
}
好了社搅,代碼到此結(jié)束驻债。
如有問(wèn)題可添加我的QQ:1290925041
還可添加QQ群:234812704(洲洲哥學(xué)院)
歡迎各位一塊學(xué)習(xí)乳规,提高逼格!
也可以添加洲洲哥的微信公眾號(hào)
更多消息
更多信iOS開(kāi)發(fā)信息 請(qǐng)以關(guān)注洲洲哥 的微信公眾號(hào)合呐,不定期有干貨推送: