4

MonoTouch.CoreGraphicsクラスを使用していくつかのアイテムを描画し、UIControlをAddSubviewを介してUIViewに配置したUIControlが定義されています。私は時計やダイヤルで分や秒針のような動きのような何かをシミュレートするために全体の視点を取るしようとしています。私は、UIViewでTransformを使用してそれを行うことができるという印象を受けています。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(); 

上記のうちどれもiがありませんでした私のディスプレイにmpact。それはわずかに回転したり動いたりしません。すべてのiOS関連の投稿はCGAffineTransformRotateを参照していますが、私はそれに対してMonoの完全一致を見つけることができず、それが上記のことと同等であると仮定しています。私のビューを回転させようとしなければならない他の方法がありますか?

+0

CGAffineTransformRotateに相当するのは、呼び出すアフィンを回転させるCGAffineTransform.Rotate()メソッドです。だからあなたのコードは正しいです。実際の問題は「コンテナ」です。それは何ですか? 複製しようとしていた効果を見たところで、いくつかのコードを共有できますか? –

+0

回転ホイールを作成してモノトゥーに移植する方法に関する記事を読んでいます。私は、タイマーを使って回転させようとしている部分で描画して停止する形を得ました。ここに記事http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikitへのリンクがあります。私は私のUIControlクラスで正常に動作するDrawWheelメソッドを持っています。ホイールコントロールのインスタンスを作成し、AddSubviewを使用してUIViewに追加します。私が書いたすべてのコードをお送りします。あなたに送ってほしい場所を教えてください。 –

+0

あなたのコードを共有する最も簡単な方法は、http://bugzilla.xamarin.comのバグレポートを開き、それにコードを添付して、この質問へのリンクを添付することです。 – poupou

答えて

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は、イベントを発生させてこれを行うためにタイマーを使用しようとしているのが好きではなかったということでした。メインスレッドで明示的にコードを呼び出す場合でも、何もしません。使用していたキャンバスのサイズも増やしました。私はタイマーを使用して停止し、上記のサイズを増加させた後。 –

+0

MonoTouchで予定されているタイマーだけが動作していることに気付きました。あなたの遅延として0dのスケジュールされたタイマーを使用してみてください。 –

関連する問題