Вращающиеся кнопки UIB на виде - PullRequest
0 голосов
/ 29 июля 2010

У меня есть 5 кнопок на UIView, которые я хотел бы нанести равномерно вдоль круговой траектории, и чтобы они непрерывно вращались вдоль этой траектории. Чтобы было ясно, я не хочу вращать сами кнопки, я просто хочу, чтобы они двигались по круговой траектории.

Каков наилучший способ справиться с этим?

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Нет причин анимировать каждую кнопку отдельно по пути. Вы сказали, что у вас есть 5 кнопок на UIView. Просто поверните это представление, к которому вы добавили их, и все остальные кнопки будут вращаться, обеспечивая тот же эффект, что и запрашиваемый путь.

Хитрость в том, что вам понадобится явная анимация, а не ярлыки анимации UIView:

CABasicAnimation* rotationAnimation = 
          [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
[rotationAnimation setToValue:[NSNumber numberWithFloat:DegreesToRadians(360)]];
// Make a full rotation in five seconds
[rotationAnimation setDuration:5.0];
// Repeat forever.
[rotationAnimation setRepeatCount:HUGE_VALF];
// Make the animation timing linear
[rotationAnimation setTimingFunction:
                      [CAMediaTimingFunction 
                       functionWithName:kCAMediaTimingFunctionLinear]];

[[rotationView layer] addAnimation:rotationAnimation forKey:nil];

Переменная вращениеПросмотр - это представление, которое содержит все кнопки. На данный момент все, что вам действительно нужно сделать, это рассчитать, где ваши кнопки должны быть расположены вначале. Все остальное обрабатывается для вас.

1 голос
/ 29 июля 2010

Создайте UIBezierPath или CGPath для каждой кнопки, регулируя начальный угол и конечный угол для учета начальных начальных точек каждой кнопки.Затем для каждой кнопки / пути создайте CAKeyframeAnimation, задайте ему путь, установите его для автоматического повторения и добавьте его в слой соответствующей кнопки.

Метод UIBezierPath +bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise: поможет вам создать круговые пути.Вам нужно будет рассчитать правильные углы, но это всего лишь математика.

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