У меня есть пользовательская ячейка UITableView, которая имеет кнопку и маркировку. Я запускаю метод, когда кто-то касается на кнопке, и затем окрасьте ту строку. Это все хорошо работает.
То, что я хочу на самом деле сделать,
Мой код ниже (BackView является представлением в моей пользовательской ячейке),
CAGradientLayer *layer = [CAGradientLayer layer];
layer.frame = BackView.bounds;
UIColor *cOne = [UIColor paleYellowColor];
UIColor *cTwo = [UIColor whiteColor];
NSArray *colors = [NSArray arrayWithObjects:(id)cOne.CGColor,
cTwo.CGColor, nil];
layer.colors = colors;
NSNumber *stopOne = [NSNumber numberWithFloat:0.00];
NSNumber *stopTwo = [NSNumber numberWithFloat:0.8];
NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil];
layer.locations = locations;
CABasicAnimation *animateLayer = [CABasicAnimation animationWithKeyPath:@"colors"];
animateLayer.fromValue = [UIColor paleYellowColor];
animateLayer.toValue = [UIColor whiteColor];
animateLayer.duration = 3.0;
animateLayer.removedOnCompletion = YES;
animateLayer.fillMode = kCAFillModeBoth;
animateLayer.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[layer addAnimation:animateLayer forKey:@"animation"];
[BackView.layer insertSublayer:layer atIndex:0];
С этим кодом, когда я касаюсь кнопки строки, фон получает градиент, но это никогда не исчезает, нет никакой анимации - ничто. Что я делаю неправильно? Я попробовал несколько перестановок и видел некоторые примеры, но ни один, что помогло мне получить эту работу.
Спасибо!
Когда вы анимируете свойство с явной анимацией, вы указываете тип, который ожидает свойство. Свойство colors можно анимировать, однако вы даете ему UIColor для значений from и to. Ожидается NSArray. Также вам понадобятся CGColorRefs для самих цветов. Я не пробовал, но думаю, что вам нужно изменить ваши строки to и from на:
animateLayer.fromValue = [NSArray arrayWithObjects:
(id)[[UIColor paleYellowColor] CGColor],
(id)[[UIColor whiteColor] CGColor], nil];
animateLayer.toValue = [NSArray arrayWithObjects:
(id)[[UIColor whiteColor] CGColor],
(id)[[UIColor whiteColor] CGColor], nil];
Теоретически это должно исчезнуть с вашего желто-белого градиента на белый / белый, что должно дать эффект исчезновения .
С уважением.