2011-05-05 296 views
4

當用戶通過切換到前景來激活應用程序時,我需要隱藏屏幕上的內容。如何在applicationDidBecomeActive之前更新屏幕?

我已經嘗試在applicationDidBecomeActive或applicationWillEnterForeground中插入我的代碼,雖然它運行良好,但我想要隱藏的文本的舊屏幕會立即顯示。

如何在屏幕重繪之前隱藏該字段?

感謝

iphaaw

回答

2

我認爲問題是,iOS設備將捕獲從它轉到後臺的那一刻你的應用程序的截圖,所以動畫將在瞬間工作。

我認爲這樣做的唯一方法是在應用程序轉到背景時隱藏/遮蓋您的視圖。

2

applicationWillResignActive:中寫一些代碼來隱藏您需要隱藏的任何內容。

0

我面臨類似的情況,但我不想隱藏,而是想顯示一個塊代碼屏幕來授予訪問權限。無論如何,我認爲該解決方案也適用於您的需求。

我經常在我的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 
相關問題