Я использую студию Xamarin и разрабатываю приложение для iPad с помощью Xamarin.iOS.
Я устанавливаю постоянное значение для выхода ограничения макета в моем файле С#.
Что у меня есть на данный момент (без анимации)
_myRightSpaceConstraint.Constant = 50;
Что я хочу
Анимируйте эту константу так, чтобы она шла от:
_myRightSpaceConstraint.Constant = 300;
to
_myRightSpaceConstraint.Constant = 50;
ИЛИ, аналогично предыдущему, но не указывая начальную константу (300), вместо этого я просто беру то, что установлено в файле xib, и анимирую до 50.
Возможно ли это сделать в Xamarin, и если да, то есть ли примеры кода, которые мне помогут?
Что я пробовал - что не работает
UIView.BeginAnimations ("slideAnimation");
float _pt;
_pt = _myRightSpaceConstraint.Constant;
UIView.SetAnimationDuration (5);
UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
UIView.SetAnimationDelegate (this);
UIView.SetAnimationDidStopSelector (
new Selector ("slideAnimationFinished:"));
_myRightSpaceConstraint.Constant = 50;
UIView.CommitAnimations ();
Это фактически успешно устанавливает константу на 50, но без анимации.
Изменить/обновить:
Мне удалось добиться того, чего я хотел, со следующим:
_myRightSpaceConstraint.Constant = 150;
_myViewWithTheConstraint.SetNeedsUpdateConstraints ();
UIView.BeginAnimations ("slideAnimation");
UIView.SetAnimationDuration (1);
UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
UIView.SetAnimationDelegate (this);
UIView.SetAnimationDidStopSelector (
new Selector ("slideAnimationFinished:"));
_myViewWithTheConstraint.LayoutIfNeeded ();
UIView.CommitAnimations ();
Ключевой была следующая строка:
_myViewWithTheConstraint.LayoutIfNeeded ();