Вопрос о узловой точке - PullRequest
       20

Вопрос о узловой точке

0 голосов
/ 27 сентября 2011

Так что в последнее время я играл с анимацией, и я наткнулся на точку привязки.Я понимаю, что точка привязки по умолчанию (0,5, 0,5) является серединой представления, и вы можете изменить ее так, чтобы точка привязки находилась на одной из границ.Мой вопрос: как мне продолжать это, если я хочу, чтобы мой взгляд вращался вокруг определенной точки в суперпредставлении представления?Любая помощь с благодарностью

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

Я понял это сам: я хотел, чтобы точка привязки была на левой границе экрана, поэтому я сделал следующее:

CGFloat subviewX = ((1/view.frame.size.width)*view.frame.origin.x) * (-1);
CGFloat subviewY = 0.5;
0 голосов
/ 03 октября 2011

Оформить этот вопрос Как повернуть CALayer в одну точку

Также - хотя я думаю, что вы, вероятно, уже сделали это - прочитайте Руководство по программированию базовой анимации, Геометрия и преобразования слоев .

Ваш вопрос отличается тем, что вы хотите указать точку вращения, которая находится в суперпредставлении вашего представления. Для этого вы хотите преобразовать эту точку суперпредставления в подпредставление. Вы можете сделать это следующим образом:

  1. Возьмите границы своего супервизора, например, (0, 0, 500, 500)
  2. Возьмите свою рамку подпредставления, например, (50, 50, 100, 100)
  3. Возьмите точку поворота суперпредставления, например, (75, 75)
  4. Преобразовать это в точку относительно подпредставления следующим образом:

    CGFloat subviewX = 75.0f - subview.frame.x;
    CGFloat subviewX = 75.0f - subview.frame.y;
    
  5. Это дает ожидаемый результат (25,0f, 25,0f)

Чтобы повернуть CALayer с CABasicAnimation, взгляните на выбранный ответ на этот вопрос: CALayer с вращением анимации .

...