尝试使用Transform在MonoTouch中旋转UIView

时间:2012-02-26 14:06:06

标签: xamarin.ios core-graphics transform rotation cgaffinetransform

我定义了一个UIControl,其中我使用了MonoTouch.CoreGraphics类来绘制一些项目,并通过AddSubview将UIControl放入UIView中。我正试图采取视图并将整个事物转变为模拟某种类似于时钟或表盘上的分针或秒针的移动。我的印象是我可以用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完全匹配,并假设这与我上面所做的相同。还有其他方法我应该尝试让我的视图旋转吗?

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。我正在开发一款大型游戏,并在我的代码中完成所有这些操作。这是我能给你的最简单的例子:

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