質問: 0; i < 3; i++) { MyUIView.x += 10; // x座標を右方向に伸ばしていく MyUIView.SetNeedsDisplay(); // Drawを呼ぶ System.Threading.Thread.Sleep(1000); // 1秒まつ } Draw関数の中でMyUIView.xの値を参照して直線を描画しています。 しかし上記の方法ですとMyUIView.SetNeedsDisplay();の関数でUIViewのDraw関数が呼ばれません。 そもそも実装の方法が根本的に悪いのでしょうか。 何か実装方法についてアドバイスいただけますと助かります。
回答: Xamarinの話ではないですが、SetNeedsDisplayは「再描画の必要がある」と知らせるだけで、ただちに再描画されるわけではありません。無理矢理、再描画されるような刺激を与えれば、すぐに再描画してくれるかも知れませんが、他の方法を探した方が良いと思います。 直線用のUIViewを乗せ、UIViewのアニメーションを使ってX方向にサイズを伸ばす、とか。 アニメーショについては、とりあえずこの辺を。 Objective-Cでアニメーションまとめ Xamarinでも出来ると信じて..。