Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在Xamarin.iOS中为微光设置渐变层动画_C#_Ios_Xamarin_Xamarin.ios_Cabasicanimation - Fatal编程技术网

C# 无法在Xamarin.iOS中为微光设置渐变层动画

C# 无法在Xamarin.iOS中为微光设置渐变层动画,c#,ios,xamarin,xamarin.ios,cabasicanimation,C#,Ios,Xamarin,Xamarin.ios,Cabasicanimation,无法使用用于微光的CABasicAnimation设置渐变层动画 CAGradientLayer gradientLayer = new CAGradientLayer(); gradientLayer.Colors = new CGColor[] { UIColor.Black.CGColor, UIColor.White.ColorWithAlpha(0.1F).CGColor, UIColor.Black.CGColor }; gradientLayer.StartPoint = new

无法使用用于微光的CABasicAnimation设置渐变层动画

CAGradientLayer gradientLayer = new CAGradientLayer();
gradientLayer.Colors = new CGColor[] { UIColor.Black.CGColor, UIColor.White.ColorWithAlpha(0.1F).CGColor, UIColor.Black.CGColor };
gradientLayer.StartPoint = new CGPoint(0, 0.5);
gradientLayer.EndPoint = new CGPoint(1.0, 0.525);
gradientLayer.Locations = new NSNumber[] { 0.4, 0.5, 0.6 };
gradientLayer.Frame = new CGRect(- shimmerView.Frame.Width, 0, 3 * shimmerView.Frame.Width, shimmerView.Frame.Height);

shimmerView.Layer.Mask = gradientLayer;

CABasicAnimation anmtn = new CABasicAnimation();
anmtn.KeyPath = "TransGrad";
anmtn.From = NSArray.FromObjects(new NSNumber[] { 0.0, 0.1, 0.2 });
anmtn.To = NSArray.FromObjects(new NSNumber[] { 0.8, 0.9, 1.0 });
anmtn.Duration = 2;
anmtn.RepeatCount = 1000;
gradientLayer.AddAnimation(animation, "loc");
我能够使用swift中相同的逻辑制作动画。请为Xamarin.iOS提供您的答案

迅捷的


问题似乎是为动画传递给
KeyPath
的值
CAGradientLayer
没有属性
Transcrad
,因此尝试使用该关键路径添加动画将不起作用

如果仅保留Swift版本的相同关键点路径,则动画的行为应相同:

CAGradientLayer gradientLayer = new CAGradientLayer();
gradientLayer.Colors = new CGColor[] { UIColor.Black.CGColor, UIColor.White.ColorWithAlpha(0.1F).CGColor, UIColor.Black.CGColor };
gradientLayer.StartPoint = new CGPoint(0, 0.5);
gradientLayer.EndPoint = new CGPoint(1.0, 0.525);
gradientLayer.Locations = new NSNumber[] { 0.4, 0.5, 0.6 };
gradientLayer.Frame = new CGRect(- shimmerView.Frame.Width, 0, 3 * shimmerView.Frame.Width, shimmerView.Frame.Height);

shimmerView.Layer.Mask = gradientLayer;

CABasicAnimation anmtn = new CABasicAnimation();
anmtn.KeyPath = "locations";
anmtn.From = NSArray.FromObjects(new NSNumber[] { 0.0, 0.1, 0.2 });
anmtn.To = NSArray.FromObjects(new NSNumber[] { 0.8, 0.9, 1.0 });
anmtn.Duration = 2;
anmtn.RepeatCount = 1000;
gradientLayer.AddAnimation(anmtn, "shimmer");
请注意,它是
“locations”
,而不是
“locations”
,因为此值最终会传递到本机iOS库,因此大小写必须与属性的命名方式匹配


如果这不能解决您的问题,您需要提供更多关于您的C#code中的
shimerview
和Swift代码中的
self
以及调用这些代码片段的上下文的信息。

Swift中此逻辑的代码是什么?@adlee dev更新了这篇文章。请检查您似乎根本没有在C代码中设置anmtn.to。很抱歉,在stackOverflow中粘贴代码时出错。
CAGradientLayer gradientLayer = new CAGradientLayer();
gradientLayer.Colors = new CGColor[] { UIColor.Black.CGColor, UIColor.White.ColorWithAlpha(0.1F).CGColor, UIColor.Black.CGColor };
gradientLayer.StartPoint = new CGPoint(0, 0.5);
gradientLayer.EndPoint = new CGPoint(1.0, 0.525);
gradientLayer.Locations = new NSNumber[] { 0.4, 0.5, 0.6 };
gradientLayer.Frame = new CGRect(- shimmerView.Frame.Width, 0, 3 * shimmerView.Frame.Width, shimmerView.Frame.Height);

shimmerView.Layer.Mask = gradientLayer;

CABasicAnimation anmtn = new CABasicAnimation();
anmtn.KeyPath = "locations";
anmtn.From = NSArray.FromObjects(new NSNumber[] { 0.0, 0.1, 0.2 });
anmtn.To = NSArray.FromObjects(new NSNumber[] { 0.8, 0.9, 1.0 });
anmtn.Duration = 2;
anmtn.RepeatCount = 1000;
gradientLayer.AddAnimation(anmtn, "shimmer");