私はUIView(コンテンツ)を持っています。これは、大きな赤い点を持つ白いビューです。viewDidAppear、また、アプリがバックグラウンドから復帰したとき
アプリが最初に起動するときに、ドットをフェードイン(わずか0.5秒)します。
そのビューが再度表示されるたび
は(そう、ユーザーは他のいくつかの画面になっていて、その画面に戻ってきた)、私はドットがフェードインします。問題ありません今のところ
override func viewDidAppear(animated: Bool)
{
content.fadeIn()
}
アプリは(そのビューが表示されていると仮定して)ユーザーがフォアグラウンドにそれをもたらしたときに、バックグラウンドに行くたびしかし、私は、私はこの
func weAreActive(notification: NSNotification) {content.fadeIn()}
func weAreNotActive(notification: NSNotification) {content.alpha = 0;}
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
NSNotificationCenter.defaultCenter().addObserver(
self, selector: #selector(weAreActive(_:)),
name: UIApplicationDidBecomeActiveNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(
self, selector: #selector(weAreNotActive(_:)),
name: UIApplicationDidEnterBackgroundNotification, object: nil)
}
override func viewDidDisappear(animated: Bool)
{
super.viewDidDisappear(animated)
NSNotificationCenter.defaultCenter().removeObserver(self)
}
を行う。それがフェードインしたいです最初の号:私はviewWillAppear/viewDidDisAppear のペアを使用して登録/登録解除することに懸念しています。私が間違っている? のペア(おそらくviewDidAppear/somethingElse)を使用する必要がありますか?または?
第二の問題:私は両方viewDidAppear
と「weAreActive`が同時にトリガー
それは洗練ようです(おそらく、アプリは最初のインスタンス起動)を有する心配です。立ち上がり、目を覚まし、従来のviewDidAppearのすべてを含む原因で「このビューが本当に現れる」を探すより良い方法はありますか?
おそらく 'viewDidAppear'と' viewWillDisappear'を好むでしょう。本当に良い出来事はありません。ほとんどの場合、バックグラウンドから戻るときにUIを変更する必要はありません。ユーザーは通常、できるだけ早く作業したいと思っています。また、システムによって撮影された以前のUIのスクリーンショットを見ることができるため、アニメーションは良い解決策ではありません。 – Sulthan
こんにちは@Sulthan、ありがとう、なぜあなたは 'viewDidAppear'と' viewWillDisappear'を登録/登録解除したいのですか? – Fattie
この通知では問題はありませんが、通常、ビューが表示されているか消えているときに通知を受け取ることは望ましくありません。そのため、私は 'viewDidAppear'を好む理由です。 – Sulthan