2017-07-27 48 views
0

我試圖通過點擊本地通知打開我的應用程序動畫標籤。如果我通常打開應用程序,則動畫工作,但在從本地通知中打開應用程序時不起作用。我有一個條件(Astat),當它變爲真時,發送本地通知。但我似乎無法讓動畫起作用。繼承人我的嘗試:從本地通知打開應用程序後動畫標籤[Swift 3.0 - Xcode 8]

override func viewDidAppear(_ animated: Bool) { 
    if Astat == true{ 
     animateText()} 
    print("viewDidAppear") 
} 

任何人都可以請幫忙嗎?

+0

什麼時候將Astat值更改爲true? –

+0

我有一個在後臺運行的函數,這個函數可以設置Astat爲true(如果條件滿足)。然後發送本地通知。阿斯塔特仍然如此。當我按下本地通知時,打開我的應用程序。 Astat仍然如此,但應該動畫的文本不是動畫。 –

+0

那麼你的應用程序仍然處於前臺? –

回答

1

問題是viewDidApear當您輸入前景時不會被調用。您需要添加通知觀察者才能使動畫生效。

override func viewDidLoad() { 
    super.viewDidLoad() 

    NotificationCenter.default.addObserver(self, selector: #selector(animateText), name: .UIApplicationWillEnterForeground, object: nil) 
} 

func animateText() { 
    // An example of animating your label 
    UIView.animate(withDuration: 2.0) { 
     self.label.transform = CGAffineTransform(translationX: 50, y: 100) 
    } 
} 

記得在視圖控制器取消初始化時刪除觀察者。

deinit { 
    NotificationCenter.default.removeObserver(self, name: .UIApplicationWillEnterForeground, object: nil); 
} 
+0

完美的作品!謝謝Lawliet! –

相關問題