Intereting Posts
Реагирование на несколько iBeacons Является ли iOS ориентированным на регион .lproj Directory (например, en_US.lproj)? Выполнение скриншота работает в симуляторе, но не работает на реальном устройстве Невозможно передать изображение другому UIViewController по сравнению с существующим моделями устройство выбирает неправильное изображение сетчатки SERVICE_PLIST: GoogleService-Info.plist не удалось найти Изображение на 90 градусов повернуто AVCam Быстрее ли передавать NSData по сравнению с UIImage Как заставить пиксели соответствовать указанному цвету в растровом UIImage? Настройка Происхождения анимации в центр обзора Приложение закрывается без предупреждения о сбое Отправка уникального токена устройства поставщику push-уведомлений Кнопка «Назад» не появляется после выполнения push segue Ошибка: не удается присвоить значение типа «AnyObject»? к значению типа «NSURL» Дизайн классов с помощью RestKit + CoreData

Использование анимации ядра для анимации StrokeColor

Я пытаюсь оживить свойство strokeColor CAShapeLayar. Я просмотрел документацию, и было заявлено, что это анимационное свойство. Код работает для анимации postion.y, но не для strokeColor. Я буду рад получить любую помощь или совет

Код, который я использовал:

lyr.fillColor = [[UIColor clearColor] CGColor]; lyr.lineWidth = 3.8; lyr.strokeColor = [[UIColor yellowColor] CGColor]; lyr.position = CGPointMake(160, 431); lyr.anchorPoint = CGPointMake(.5f, .5f); [self.view.layer addSublayer:lyr]; CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"strokeColor"]; basicAnimation.fromValue = [lyr valueForKey:@"strokeColor"]; basicAnimation.toValue =[NSValue valueWithPointer:[[UIColor clearColor] CGColor]]; basicAnimation.duration = 2; basicAnimation.repeatCount = 10; basicAnimation.autoreverses = YES; [lyr addAnimation:basicAnimation forKey:@"strokeColor"]; 

Спасибо заранее, или.

Solutions Collecting From Web of "Использование анимации ядра для анимации StrokeColor"

Это должно работать, поскольку я только что протестировал его:

 CABasicAnimation *strokeAnim = [CABasicAnimation animationWithKeyPath:@"strokeColor"]; // I changed the animation pointer name, but don't worry. basicAnimation.toValue = (id) [UIColor clearColor].CGColor; // Just get rid of the fromValue line, and just cast the CGColorRef to an id. basicAnimation.duration = 2; basicAnimation.repeatCount = 10; basicAnimation.autoreverses = YES; [lyr addAnimation:strokeAnim forKey:@"flashStrokeColor"]; // I like to name this key differently, so as not create confusion. 

Заметьте, что я удалил fromValue свойств fromValue из анимации, так как вам нужно то же значение, что и установка strokeColor перед анимацией (ее избыточность). Кроме того, я выбрал CGColorRef strokeColor для идентификатора, который именно то, что хочет свойство toValue .

Важной ошибкой принятого кода ответа является то, что параметр forKey: метод addAnimation должен быть именем свойства, неявная анимация которого вы хотите предотвратить. Поскольку вы создаете явную анимацию с помощью CABasicAnimation, вы не хотите, чтобы как неявная анимация, так и вновь созданная явная анимация мешали друг другу. См. Видео WWDC 2010 для сеанса 424 Core Animation – Core Animation in Practice, часть 1, на отметке 39 минут для подтверждения.