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