Поворот анимации изображения кнопки - PullRequest
0 голосов
/ 11 января 2019

Я создаю UIButton и добавляю его выше UITabBar, в пользовательский UITabBarController.

var button = new UIButton(new CGRect(x, y, 50, 50));
button.Layer.BorderWidth = 2;
button.Layer.CornerRadius = button.Frame.Height / 2;
button.SetImage(UIImage.FromBundle("Name"), UIControlState.Normal);

this.View.AddSubview(button);
this.View.LayoutIfNeeded();

Когда я пытаюсь добавить преобразование вращения в представление изображения, оно не вращается вокруг центра и оси z, как я и ожидал (и встречается в каждой прочитанной документации).

Вместо этого он оживляет как-то иначе.
То же самое, независимо от того, добавляю ли я преобразование к ImageView или его слою.
Это, например, поворот на 30 градусов (pi / 180 * 30) и 10 градусов.

enter image description hereenter image description here

Однако, когда я добавляю SublayerTransform к слою кнопки, он преобразуется, как и ожидалось. Проблема с этим подходом состоит в том, что он не может быть анимирован с UIView.Animate или CATransaction.Begin.

Position, AnchorPoint и все остальное установлено по умолчанию. Я тоже пытался поиграть с этими свойствами, но безрезультатно.

Как видно из изображений, это знак +, который должен анимироваться, чтобы стать x.

Любая подсказка очень ценится.

3D-преобразования, которые я определил следующим образом:

CATransform3D.MakeRotation((float)(Math.PI / 180 * 45), 0, 0, 1)

и обычные такие:

CGAffineTransform.MakeRotation((float)(Math.PI / 180 * 45))

1 Ответ

0 голосов
/ 11 января 2019

Если вам по какой-то причине нужно повернуть изображение кнопки, попробуйте следующее:

button.ImageView.Layer.Transform = CATransform3D.MakeRotation((float)(Math.PI / 180 * 45), 0.0001f, 0.0001f, 1);

При значениях x и y, равных 0, кажется, что по осям x и y все еще вращение, хотя и не должно быть. При значении 45 градусов он также поворачивает x и y, так что вы видите край изображения (кажется, что он поворачивает x и y на 90 градусов), то есть он исчезает. Ввод небольшого значения для X и y, по-видимому, позволяет избежать этой ошибки. Я собираюсь посмотреть, является ли это эксклюзивом для Xamarin или для iOS.

РЕДАКТИРОВАТЬ: Я только что проверил это в Obj-C в XCode и получил точно такое же поведение, так что это не проблема Xamarin, а проблема с iOS и как она обрабатывает преобразования для UIImageView это в UIButton. Та же проблема не возникает с UIImageView, который не в UIButton.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...