2017-07-27 43 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! –

相关问题