我有一個UIViewController,它包含2個使用UIGraphics.GetCurrentContext進行自定義繪製的子視圖(派生自UIView的類)。繪圖在應用程序啓動時工作正常。我的子視圖在視圖控制器的viewDidLoad()連接這樣的:爲什麼UIGraphics.GetCurrentContext返回null?
DigitalNumberView dnv = new DigitalNumberView();
dnv.Frame = new System.Drawing.RectangleF(10, 10, 750, 190);
View.AddSubview(dnv);
CircleView tuner = new CircleView(dnv);
tuner.Frame = new System.Drawing.RectangleF(570, 220, 190, 190);
View.AddSubview(tuner);
我需要的第一子視圖取決於第二子視圖做什麼來繪製自定義的東西。當第二個子視圖獲得TouchesEnded時,我在第一個子視圖中調用一個顯示新數據的函數。第一個子視圖中的圖形使用UIGraphics.GetCurrentContext,它在此特定工作流程中變爲空。下面是它是如何繪製一個樣本:
SetNeedsDisplay();
CGContext context = UIGraphics.GetCurrentContext();
if (null == context) {
Console.WriteLine("Retrieved null CGContext");
return;
}
RectangleF r = new RectangleF(25, 10, 180, 180);
ClearNumber(context, r);
DisplayNumber(context, f, r);
UIGraphics.EndImageContext();
爲什麼UIGraphics.GetCurrentContext只有在這個工作流程,但在啓動時不返回null?還有另一種方法可以達到同樣的效果嗎?我只是想念一些東西?
完美!有用。我所要做的就是告訴第一個子視圖有新的數據繪製,保存新的值,並調用SetNeedsDisplay()。正常的油漆機制從那裏接管。我已經忽略了Draw,但我試圖在Draw之外繪製,這不起作用。謝謝。 – Jim 2011-03-01 03:04:38