我想在Xamarin.iOS中使用UIViewPropertyAnimator,但我的项目实际上是Xamarin表单的一部分。我创建了一个依赖服务,并尝试了以下操作:
var renderer = Platform.GetRenderer(view);
var uiCubicTimingParameters = new UICubicTimingParameters(new CGPoint(x: 0.4, y: 0), new CGPoint(x: 0.2, y: 1));
var uiViewPropertyAnimator = new UIViewPropertyAnimator(duration, uiCubicTimingParameters);
uiViewPropertyAnimator.AddAnimations(() =>
{
renderer.NativeView.Transform = CGAffineTransform.MakeTranslation(300, 0);
});
uiViewPropertyAnimator.StartAnimation();这种方法的问题是它直接更新原生视图,但Xamarin Forms视图不再同步。因此,我注意到一些奇怪的UI问题。
在Xamarin表单中使用UIViewPropertyAnimator的正确方式是什么?
发布于 2021-09-23 08:34:56
在开始动画之前,首先设置它的初始变换,并且不要忘记在动画完成时通知Forms最后的更改。
请参阅以下代码
public async Task TranslateViewAsync(View view)
{
var finished = false;
CoreFoundation.DispatchQueue.MainQueue.DispatchAsync(() =>
{
var renderer = Platform.GetRenderer(view);
renderer.NativeView.Transform = CGAffineTransform.MakeTranslation(375, 0);
var uiViewPropertyAnimator = new UIViewPropertyAnimator(0.3, UIViewAnimationCurve.EaseOut, () =>
{
renderer.NativeView.Transform = CGAffineTransform.MakeTranslation(0, 0);
});
uiViewPropertyAnimator.AddCompletion(p =>
{
finished = true;
});
uiViewPropertyAnimator.StartAnimation();
});
while (!finished)
await Task.Delay(10);
}请参阅https://github.com/xamarin/Xamarin.Forms/issues/6999#issuecomment-542488010。
https://stackoverflow.com/questions/69291906
复制相似问题