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

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

  • Процедурное оживление роста 2D-установки
  • UIBezierPath и applytransform
  • Копирование содержимого из одного PDF в другой
  • Наложения полигонов, мешающие друг другу при заполнении MKPolygon CGPattern (с использованием Quartz 2D)
  • Цветное изображение игнорирует альфа-канал - почему и как исправить?
  • рисовать круговую диаграмму с использованием кварца iOS 2D
  • Использование CGContextFillPath и CGContextStrokePath вместе? IOS
  • Анимация рисунка линии
  • 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 (угол).

    Interesting Posts

    Кто-нибудь смог использовать setBrightness] на фоне / выходе?

    Skrollr прерывается, если используются изображения?

    NSURL, чтобы указать путь в тестовом комплекте с помощью XCTest

    Размер обновления приложения для iOS намного больше размера приложения

    UITableViewAutomatic Ограничения на разрыв?

    Swift: удалить слой, не удаляя UIView в UITableViewCell

    Запуск кода Scala на iOS

    определить направление вращения пальца

    Объектный файл не содержит отладочную информацию DWARF

    Воспроизведение видео исчезает через несколько секунд

    Как преобразовать строку даты типа «2011-01-12T14: 17: 55.043Z» в длинный как 1294841716?

    AFNetworking 2.0: как передать полный аргумент json param, преобразованный как base64encoded + urlencoded string для AFNetworking 2.0 Post Request

    Невозможно вызвать 'indexOf' с помощью списка аргументов типа '(ChecklistItem)'

    Как передать NSManagedObjectContext для просмотра контроллеров при использовании раскадровки (iOS)

    ZBar с iOS7 и XCode5 с компиляцией ошибок libzbar.a architecture

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.