Кажется, что проблема заключается в значении, которое вы передаете KeyPath
для вашей анимации.CAGradientLayer
не имеет свойства TransGrad
, поэтому попытка добавить анимацию с помощью KeyPath не будет работать.
Если вы просто оставите тот же путь ключа из версии 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, поэтому регистр должен совпадать с тем, как имя свойства там указано.
Если этоне решит вашу проблему, вам нужно будет предоставить больше информации о том, что shimmerView
в вашем коде C # и self
в вашем коде Swift и контекстах, которые называются эти фрагменты кода.