2017-05-15 12 views
1

UIImageViewを実際に登場させない限り、UIImageViewを継承するクラスでオーバーライドすることができる、Swiftや他の同様の機能のUIImageViewDidAppear関数がありますか?スクリーン?imageViewが出現した後にコードを実行する方法

オブジェクトが表示される前にinit関数が発生しているため、この関数は使用できません。

+0

は(viewDidLayoutSubviewsを使用してみてください) –

+0

あなたは、通常のビューのライフサイクルを使用することはできますか?本質的に、 'viewDidAppear'または' viewDidLayoutSubviews'はどうでしょうか? – dfd

+0

UIViewのメソッドではないビューコントローラメソッドです。 –

答えて

3

あなたはUIImageViewをサブクラス化とメソッドdidMoveToSuperviewをオーバーライドすることができます。

class ImageView: UIImageView { 
    override func didMoveToSuperview() { 
     guard superview != nil else { return } 
     print("put your code here") 
    } 
} 
+0

これは良い解決策ですが、新しい 'superview'をチェックする必要があります。 'nil'の場合、イメージビューは削除されています。したがって、 'superview'が' nil'でないことを保証する必要があります。 – rmaddy

+0

@rmaddyあなたは本当ですか?もしそれがnilなら、それはすでにスーパービューに移動することができますか?ところで、これは 'willMove(toSuperview:)'ではありません。 –

+0

はい、私は確信しています。私はちょうど遊び場でそれを確認しました。 'removeFromSuperview'を呼び出すと、' didMoveToSuperview'が呼び出され、その時点で 'superview'が' nil'になります。 – rmaddy

関連する問題