在viewWillAppear
我想調整的一些使用下面的變換(MonoTouch的代碼),我的看法:爲什麼從viewWillAppear觸發時,CATransform3D不工作?
CATransform3D oTransform3D = CATransform3D.Identity;
oTransform3D.m34 = 1.0f/-400;
oTransform3D = oTransform3D.Translate(110, 0, 0);
oTransform3D = oTransform3D.Rotate((-70f) * (float)Math.PI/180f, 0, 1, 0);
然而,這會導致要呈現的視圖最左邊的畫面。 如果我把相同的代碼放在viewDidAppear
中,它就可以工作。 我已經檢查過所有的視圖都有有效的大小。
我有一個UIViewController。爲了這個控制器的視圖,我添加了一個子視圖。在這個子視圖中,我應用了上面的轉換。如果我把上面的代碼放在viewDidAppead中,這個轉換是按預期工作的。但是,如果我把它放在視圖中,結果是不同/錯誤的。我想明白爲什麼。 AFAIK在viewWillAppear所有意見都已定位,並有他們的最終尺寸已經。 – Krumelur 2012-03-01 20:36:39
ViewDidLoad在第一次使用ViewController時發生1次。 ViewWillAppear會在每次視圖被回憶時發生,比如離開它,然後再回來。我的建議是嘗試在ViewDidLoad中放置你的代碼塊,作爲發生在你的ViewDidLoad代碼中的其他地方的最後一件事,你正在移動或改變與基本視圖相關的東西。 – 2012-03-07 13:41:35