4

我有一個UIControl,在其中我使用了MonoTouch.CoreGraphics類來繪製一些項目,並通過AddSubview將UIControl放到UIView中。我試圖把這個觀點轉化爲模擬某種時鐘或撥號盤上的分鐘或秒針的動作。我的印象是,我可以用UIView上的Transform來做到這一點。試圖在MonoTouch中使用變換來旋轉UIView

我的UIView的名稱是容器。我已經試過:

container.Transform.Rotate(-0.78f); 

我也曾嘗試:

CGAffineTransform t = CGAffineTransform.MakeIdentity(); 
    t.Rotate(-0.78f); 
    container.Transform = t; 

我也曾嘗試:

CGAffineTransform t = CGAffineTransform.MakeRotation(-0.78f); 
    container.Transform = t; 

我自己也嘗試一下這種和其他組合:

UIView.BeginAnimations("rotate"); 
    UIView.SetAnimationDuration(0.5); 
    container.Transform.Rotate((float)Math.PI); 
    UIView.CommitAnimations(); 

以上都沒有任何我在我的顯示器上。它絲毫不旋轉或移動。所有與iOS相關的帖子都引用了CGAffineTransformRotate,但是我找不到一個完全匹配的Mono,並假設這與我在上面做的相同。有沒有其他方法可以讓我的視圖旋轉?

+0

等價於CGAffineTransformRotate是CGAffineTransform.Rotate()方法,用於旋轉您調用它的仿射。所以你的代碼是正確的。真正的問題是「容器」。它是什麼? 你能分享一些代碼,你看到了你試圖複製的效果嗎? – 2012-02-26 17:38:29

+0

我正在關注如何創建一個旋轉輪並將其移植到Monotouch上的文章。我得到了繪製的形狀,並停留在試圖使用定時器旋轉的部分。這裏是文章http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit的鏈接。我的DrawWheel方法在我的UIControl類中正常工作。我創建一個我的車輪控制的實例,並使用AddSubview將其添加到UIView。我很樂意向您發送我編寫的所有代碼。請讓我知道你想讓我發送的地方。 – 2012-02-27 02:56:02

+0

分享你的代碼最簡單的方法是打開一個關於http://bugzilla.xamarin.com的bug報告,並附上你的代碼以及這個問題的鏈接 – poupou 2012-02-28 00:56:25

回答

2

你在正確的軌道上。我正在開發一款大型遊戲,並在我的代碼中遍佈各處。這裏是我可以給你的最簡單的例子:

using MonoTouch.CoreGraphics; 

float degrees = 15; 
UIView aView = new UIView(new RectangleF(10,10,10,10)); 
aView.Transform = CGAffineTransform.MakeRotation(3.14159f * degrees/180f); 

就是這樣。

這些例子很稀疏,特別是MakeRotation函數是弧度的(因此使用pi轉換爲度數)。

+0

我能夠得到它的工作。原來是一些事情。 1是它不喜歡我試圖使用計時器來觸發事件並執行此操作。即使在主線程中顯式調用代碼,它也不會執行任何操作。我還增加了我使用的畫布的大小。在我停止使用計時器並增加了尺寸後,以上工作。 – 2012-03-07 13:54:22

+0

我注意到,只有MonoTouch中的計劃定時器工作。嘗試使用0d的計時計時器作爲延遲。 – 2012-03-07 17:27:45