2016-09-15 36 views
0

我有一個基於UIView的渲染器。旋轉設備時,我會看到動畫的變化,導致layoutSubviews呼叫幾次。旋轉設備完成後,是否有辦法檢測視圖的動畫?IOS如何檢測定位完成

這是layoutSubview呼叫

public override void LayoutSubviews() 
{ 
     base.LayoutSubviews(); 

     var size = base.Frame; 
     Element.OnSizeChanged((int) size.Width, (int) size.Height); 
} 

回答

0

您可以在ViewWillTransitionToSize方法中通過協調完成處理程序捕獲UIViewController旋轉的末尾:

+0

我重寫@Simon取向改變一個UIView不是UIViewController的 – LittleFunny

+0

由'UIViewController'處理,它的子視圖被告知要調整大小,他們自己不知道爲什麼。你可以使用完成處理程序來調用'UIView'上的方法,或者更清晰的解耦方法是在處理程序中發佈一個事件,並讓你的子類「UIView」訂閱事件,你也可以使用' NSNotificationCenter.DefaultCenter' – SushiHangover

+0

謝謝,我會看看。 – LittleFunny

0

採取viewWillTransitionToSize看看。

UIKit在更改呈現的視圖控制器視圖的大小之前調用此方法。您可以在自己的對象中重寫此方法,並使用它來執行與尺寸更改相關的其他任務。例如,容器視圖控制器可能會使用此方法來覆蓋其嵌入式子視圖控制器的特性。使用提供的協調器對象來動畫您所做的任何更改。

refer apple documentation瞭解更多詳情!