當用戶通過切換到前景來激活應用程序時,我需要隱藏屏幕上的內容。如何在applicationDidBecomeActive之前更新屏幕?
我已經嘗試在applicationDidBecomeActive或applicationWillEnterForeground中插入我的代碼,雖然它運行良好,但我想要隱藏的文本的舊屏幕會立即顯示。
如何在屏幕重繪之前隱藏該字段?
感謝
iphaaw
當用戶通過切換到前景來激活應用程序時,我需要隱藏屏幕上的內容。如何在applicationDidBecomeActive之前更新屏幕?
我已經嘗試在applicationDidBecomeActive或applicationWillEnterForeground中插入我的代碼,雖然它運行良好,但我想要隱藏的文本的舊屏幕會立即顯示。
如何在屏幕重繪之前隱藏該字段?
感謝
iphaaw
我認爲問題是,iOS設備將捕獲從它轉到後臺的那一刻你的應用程序的截圖,所以動畫將在瞬間工作。
我認爲這樣做的唯一方法是在應用程序轉到背景時隱藏/遮蓋您的視圖。
在applicationWillResignActive:
中寫一些代碼來隱藏您需要隱藏的任何內容。
我面臨類似的情況,但我不想隱藏,而是想顯示一個塊代碼屏幕來授予訪問權限。無論如何,我認爲該解決方案也適用於您的需求。
我經常在我的iOS應用程序中實現一個自定義的基本視圖控制器。所以,而不是處理applicationDidBecomeActive:
或applicationWillResignActive:
我設置此視圖控制器以偵聽等效通知:
@interface BaseViewController : UIViewController
- (void)prepareForGrantingAccessWithNotification:(NSNotification *)notification;
- (void)grantAccessWithNotification:(NSNotification *)notification;
@end
@implementation BaseViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self addNotificationHandler:@selector(grantAccessWithNotification:)
forNotification:UIApplicationDidBecomeActiveNotification];
[self addNotificationHandler:@selector(prepareForGrantingAccessWithNotification:)
forNotification:UIApplicationWillResignActiveNotification];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)prepareForGrantingAccessWithNotification:(NSNotification *)notification {
// Hide your views here
myCustomView.alpha = 0;
// Or in my case, hide everything on the screen
self.view.alpha = 0;
self.navigationController.navigationBar.alpha = 0;
}
- (void)grantAccessWithNotification:(NSNotification *)notification {
// This is only necessary in my case
[self presentBlockCodeScreen];
self.view.alpha = 1;
self.navigationController.navigationBar.alpha = 1;
...
}
@end