Подтвердить что ты не робот

IOS анимированный пульсирующий круг, как синий шар на картах

Я хотел бы знать, как реализовать синий шар с пульсирующим кольцом текущего местоположения на картах, но без отображения карты.

В принципе, я хотел бы знать, как наилучшим образом иметь синий шар с пульсирующим кольцом на обычном UIView (или моем пользовательском представлении) всякий раз, когда пользователь прикасается к экрану, причем это касание является центром синего шара.

У меня есть 2 идеи, сначала я мог бы реализовать анимацию, которую я не мог сделать, но это возможно. Во-вторых, я мог бы получить последовательность изображений, например, gif, и отображать ее везде, где пользователь прикасается.

Какой из них лучший вариант? Или есть лучший вариант?

Спасибо.

4b9b3361

Ответ 1

Попробуйте следующее:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 100, 100)];
view.backgroundColor = [UIColor blueColor];
view.layer.cornerRadius = 50;

[self.view addSubview:view];

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.duration = 0.2;
scaleAnimation.repeatCount = HUGE_VAL;
scaleAnimation.autoreverses = YES;
scaleAnimation.fromValue = [NSNumber numberWithFloat:1.2];
scaleAnimation.toValue = [NSNumber numberWithFloat:0.8];

[view.layer addAnimation:scaleAnimation forKey:@"scale"];

Задайте параметры по своему усмотрению, чтобы изменить эффект.

Edit:

Вам нужно добавить фреймворк QuartzCore и включить <QuartzCore/QuartzCore.h> для этого.

Ответ 2

попробуйте это для SWIFT

let view:UIView = UIView(frame: CGRectMake(200, 200, 100, 100))
view.layer.cornerRadius = 50
view.backgroundColor = UIColor.blueColor()

self.view.addSubview(view)

let scaleAnimation:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")

scaleAnimation.duration = 0.5
scaleAnimation.repeatCount = 30.0
scaleAnimation.autoreverses = true
scaleAnimation.fromValue = 1.2;
scaleAnimation.toValue = 0.8;

view.layer.addAnimation(scaleAnimation, forKey: "scale")

Ответ 3

Выполнение анимации программно, а не с последовательностью изображений - это лучший подход (а также то, как Apple это делает). Он имеет ряд преимуществ, не в последнюю очередь из которых намного лучше (анимация последовательности изображений вряд ли будет работать на 60FPS!).

Вы можете достичь этой анимации несколькими способами: проще всего создать графическую картинку в графическом редакторе, а затем создать UIImageView, чтобы ее удерживать. Затем вы можете просто оживить масштаб, альфа и свойства фрейма (убедитесь, что ваше изображение настроено на изменение размера изображения по шкале). Чтобы ваша пульсирующая анимация повторялась бесконечно, вы можете установить свойство повторения анимации UIView. Ваш центральный "синий шар" может быть отдельным сверху UIImageView.

UIView анимация довольно проста, и у Apple есть много примеров кода, чтобы вы начали. Вы просто добавляете свойства, которые вы оживляете внутри блока анимации, вместе с параметрами анимации (продолжительность, повторение и т.д.), А iOS сделает все остальное. Поиск в StackOverflow для анимации UIView даст вам много и много вопросов, которые могут быть полезны.