試圖打破,我有一會兒一個問題,現在如何其視圖控制器的viewDidAppear之前確定的UIView大小
背景
假設我嘗試計算應該完全適合一個UIImage一個UIImageView,在故事板中受到約束。
imageView的內容不應該填充/方面適合...但完全適合框架。 因此我有一個方法,在我的viewController
- (UIImage *)calculatedImageForRect:(CGRect)imageRect
問題
我要確保,該ImageView的已儘快視圖變得可見包含正確的圖像,所以也是在一個簡單的推送轉換。 此外,我不想多次生成UIImage,因爲它相對昂貴。
這將成爲與像iPhone6加設備,具有不同的屏幕分辨率
顯然在viewDidLoad
幀未正確設置特別有趣。此時,幀被設置爲在故事板的預覽中 - 例如,設置代表IPhone5分辨率。 viewWillAppear
也是如此。 這裏框架將例如是(10,10,300,100)< - 讓我們稱之爲錯幀
在viewDidAppear
該幀被正確(10,10,394,100)=的正確幀 < - 代替320點寬度,所述iPhone6Plus有414分。儘管如此,這已經太晚了,因爲視圖已經可見並且設置圖像會導致閃爍(空圖像>新生成的圖像)。
我知道正確的時間與幅度的工作是viewDidLayoutSubviews
,這是第一個被稱爲與錯誤幀至少一次,然後在一個點上與正確幀。 但正如我所說的,我不想生成圖像多次,所以這裏的兩難境地:
我如何確定右幀之前,它是可見的?
當然,我可以通過使用UIImageView的尾部&前導約束來計算[UIScreen mainScreen]
分辨率的正確幀,但它感覺很髒。
所以你的問題的本質是,當你的視圖層次結構中的特定視圖(在這種情況下是UIImageView)最終設置爲正確的框架,但在它呈現在屏幕上之前,你想知道如何得到通知? – algal
是的,這正是我想知道的 – MarkHim