2017-05-15 36 views
1

後是否有某種斯威夫特UIImageViewDidAppear功能或類似功能的不同的名字,我可以在我的類中重寫繼承的UIImageView,將不執行,除非UIImageView的實際上已經出現在屏幕?之前我的對象出現,所以我不能用這個發生如何運行代碼的ImageView出現

初始化函數。

+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你確定嗎?如果它是零,它怎麼能被移到superview?順便說一句,這不是'willMove(toSuperview:)'。 –

+0

是的,我確定。我只是在操場驗證它。當你調用'removeFromSuperview',該'didMoveToSuperview'將被調用,在這一點上它的'superview'是'nil'。 – rmaddy