Xamarin.ios 尝试在MonoTouch中使用Transform旋转UIView

Xamarin.ios 尝试在MonoTouch中使用Transform旋转UIView,xamarin.ios,core-graphics,transform,rotation,cgaffinetransform,Xamarin.ios,Core Graphics,Transform,Rotation,Cgaffinetransform,我定义了一个UIControl,其中我使用MonoTouch.CoreGraphics类绘制了一些项目,并通过AddSubview将UIControl放入UIView。我试着从这个角度来模拟时钟或表盘上的分针或秒针的运动。我的印象是,我可以通过UIView上的转换来实现这一点 我的UIView的名称是container。我试过: container.Transform.Rotate(-0.78f); 我也尝试过: CGAffineTransform t = CGAffineTr

我定义了一个UIControl,其中我使用MonoTouch.CoreGraphics类绘制了一些项目,并通过AddSubview将UIControl放入UIView。我试着从这个角度来模拟时钟或表盘上的分针或秒针的运动。我的印象是,我可以通过UIView上的转换来实现这一点

我的UIView的名称是container。我试过:

    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;
我也尝试过:

    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,我假设这与我上面所做的是相同的。有没有其他方法可以让我的视图旋转?

你的思路是正确的。我正在开发一个大型游戏,在我的代码中到处都是这样做的。下面是我能给你的最简单的例子:

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转换为度)。

与CGAffineTransformRotate等效的是CGAffineTransform.Rotate()方法,该方法旋转调用仿射函数的仿射函数。所以你的代码是正确的。真正的问题是“容器”。这是怎么一回事?你能分享一些你看到你试图复制的效果的代码吗?我正在跟随一篇关于如何创建一个旋转的轮子并将其移植到Monotouch的文章。我得到了要绘制的形状,并在零件处停下来,试图用计时器使其旋转。这里是文章的链接。在我的课堂上,我的DrawWheel方法工作得很好。我创建了一个控制盘的实例,并使用AddSubview将其添加到UIView中。我很乐意将我编写的所有代码发送给您。请让我知道您希望我将其发送到哪里。共享代码的最简单方法是打开一个错误报告,并将您的代码附加到该报告以及此问题的链接。我提交了错误3679并附加了代码。我能够让它工作。结果是有几件事。我不喜欢我尝试使用计时器触发事件并执行此操作。即使在主线程中显式调用代码,它也不会做任何事情。我还增加了我正在使用的画布的大小。在我停止使用计时器并增加了大小之后,上面的功能就开始工作了。我注意到只有MonoTouch中的定时功能才起作用。尝试使用一个定时计时器,延迟为0d。