2015-07-22 2 views
1

У меня есть абстрактный странный образ UIView. И мне нужно отобразить гладкую анимацию внешнего вида.UIView круг маска анимация

Я предполагаю, что я должен применить эту анимацию к маске над этим представлением. Маска будет круглой формы. Итак, пользователь увидит последовательность 1'2'3'4 '. Как это реализовать? Я предполагаю, что я должен применить некоторое аффинное преобразование к виду маски. В таком случае, какова должна быть первоначальная форма маски? Вертикальная линия?

enter image description here

ответ

3

Простой пример, предположим, что у меня есть 100 * 100 imageview,

Примечание: чтобы сделать его простым, я использую жесткие кодовые номера

CAShapeLayer * maskLayer = [CAShapeLayer layer]; 
maskLayer.bounds = CGRectMake(0, 0, 100, 100); 
maskLayer.position = CGPointMake(50, 50); 
UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(50.0, 50.0) radius:50 startAngle:0 endAngle:M_PI *2 clockwise:true]; 
maskLayer.path = path.CGPath; 
maskLayer.fillColor = [UIColor clearColor].CGColor; 
maskLayer.strokeColor = [UIColor blackColor].CGColor; 
maskLayer.strokeEnd = 0.0; 
maskLayer.lineWidth = 100; 
self.imageview.layer.mask = maskLayer; 

CABasicAnimation * animation = [CABasicAnimation animation]; 
animation.keyPath = @"strokeEnd"; 
animation.toValue = @(1.0); 
animation.duration = 2.0; 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
animation.fillMode = kCAFillModeForwards; 
animation.removedOnCompletion = NO; 

[maskLayer addAnimation:animation forKey:@"keyFrame"]; 
+0

Я написал простой lib, чтобы сделать маску-анимацию easy.https: //github.com/LeoMobileDeveloper/L eoMaskAnimationKit – Leo

Смежные вопросы