Воспроизведение сири-кнопки

Есть ли способ дублирования анимации сири-кнопок? Это выглядит абсолютно великолепно, но я понятия не имею, в какой момент, как начать … есть ли онлайн-форматированные png, которые вращаются? или это делается с CoreAnimation?

3 Solutions collect form web for “Воспроизведение сири-кнопки”

Я считаю, что анимация Siri производится с помощью CAEmitterLayer и CAEmitterCell, а затем анимирована с помощью базовой анимации, но я могу быть абсолютно неправой. Вот код, который имитирует эффект:

// create emitter layer self.emitterLayer = [CAEmitterLayer layer]; self.emitterLayer.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height); self.emitterLayer.emitterMode = kCAEmitterLayerOutline; self.emitterLayer.emitterShape = kCAEmitterLayerLine; self.emitterLayer.renderMode = kCAEmitterLayerAdditive; [self.emitterLayer setEmitterSize:CGSizeMake(4, 4)]; // create the ball emitter cell CAEmitterCell *ball = [CAEmitterCell emitterCell]; ball.color = [[UIColor colorWithRed:111.0/255.0 green:80.0/255.0 blue:241.0/255.0 alpha:0.10] CGColor]; ball.contents = (id)[[UIImage imageNamed:@"ball.png"] CGImage]; // ball.png is simply an image of white circle [ball setName:@"ball"]; self.emitterLayer.emitterCells = [NSArray arrayWithObject:ball]; [self.view.layer addSublayer:self.emitterLayer]; float factor = 1.5; // you should play around with this value [self.emitterLayer setValue:[NSNumber numberWithInt:(factor * 500)] forKeyPath:@"emitterCells.ball.birthRate"]; [self.emitterLayer setValue:[NSNumber numberWithFloat:factor * 0.25] forKeyPath:@"emitterCells.ball.lifetime"]; [self.emitterLayer setValue:[NSNumber numberWithFloat:(factor * 0.15)] forKeyPath:@"emitterCells.ball.lifetimeRange"]; // animation code CAKeyframeAnimation* circularAnimation = [CAKeyframeAnimation animationWithKeyPath:@"emitterPosition"]; CGMutablePathRef path = CGPathCreateMutable(); CGRect pathRect = CGRectMake(0, 0, 200, 200); // define circle bounds with rectangle CGPathAddEllipseInRect(path, NULL, pathRect); circularAnimation.path = path; CGPathRelease(path); circularAnimation.duration = 2; circularAnimation.repeatDuration = 0; circularAnimation.repeatCount = 3; circularAnimation.calculationMode = kCAAnimationPaced; [self.emitterLayer addAnimation:circularAnimation forKey:@"circularAnimation"]; 

В классах CAEmitterCell и CAEmitterLayer имеется много свойств, поэтому проверьте их больше.

Я предлагаю вам сделать это с PNG, которые отображаются один за другим, так что получается гладкая анимация. Это проще, чем программирование кодированной анимации. Кнопка уже была воссоздана Арроном Хантом: Файл Сири Button Photoshop

Btw. Астрономию спрайтов очень легко реализовать:

 - (void)viewDidLoad { [super viewDidLoad]; NSArray * imageArray = [[NSArray alloc] initWithObjects: [UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], [UIImage imageNamed:@"3.png"], [UIImage imageNamed:@"4.png"], [UIImage imageNamed:@"5.png"], [UIImage imageNamed:@"6.png"], [UIImage imageNamed:@"7.png"], [UIImage imageNamed:@"8.png"], [UIImage imageNamed:@"9.png"], [UIImage imageNamed:@"10.png"], [UIImage imageNamed:@"11.png"], [UIImage imageNamed:@"12.png"], nil]; UIImageView * ryuJump = [[UIImageView alloc] initWithFrame: CGRectMake(100, 125, 150, 130)]; ryuJump.animationImages = imageArray; ryuJump.animationDuration = 1.1; ryuJump.contentMode = UIViewContentModeBottomLeft; [self.view addSubview:ryuJump]; [ryuJump startAnimating]; } 

Источник: http://www.icodeblog.com/2009/07/24/iphone-programming-tutorial-animating-a-game-sprite/

UIImageView имеет свойство, называемое animationImages, которое вы можете использовать для указания списка изображений, которые он будет воспроизводить последовательно, например анимированный GIF. Это, вероятно, самый простой способ сделать это, если вы хотите точно контролировать эффект.

Нечто подобное можно было бы также сделать с помощью CoreAnimation, используя одно изображение и анимируя его свойство view.transform, используя CGAffineTransformMakeRotation (угол).

  • Как я могу нарисовать вложенные радиальные градиенты на iOS?
  • рисовать круговую диаграмму с использованием кварца iOS 2D
  • Самый эффективный способ рисования части изображения в iOS
  • Пользовательский рисунок «изменчивого изображения» в iOS
  • Производительность базовой графики на iOS
  • Рисуя круг, набирая разные части разного цвета
  • Как изменить цвет частично прозрачного изображения в iOS?
  • Цветное изображение игнорирует альфа-канал - почему и как исправить?
  • Как заполнить область ниже пути в Quartz 2D?
  • Копирование содержимого из одного PDF в другой
  • Основной текст с асимметричной формой на iOS
  • Извлечь информацию о пути из черно-белого растрового изображения
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.