Estoy tratando de lograr lo siguiente: El usuario toca en una vista, aparece una vista circular a la izquierda con contenido de imagen. La vista debe animarse desde el punto de contacto hasta el fotograma final que está fuera de la vista tocada y hacia la izquierda. Durante la animación que debería ser un círculo, con un crecimiento en la posición y tamaño correctosAnimación de UIView enmascarado, CALayer
Todo funciona bien con el código de abajo, solo que durante la animación, límite circular es sólo en la izquierda. Es como si la forma CALayer
se deslizara en su marco final.
Parece algo así.
Una vez que la animación completa, tengo el círculo completo como se esperaba.
CGFloat w = 300;
CGRect frame = CGRectMake(myX, myY, w, w);
CGPoint p = [touch locationInView:self.imageView];
CGRect initialFrame = CGRectMake(p.x, p.y, 0,0);
UIImageView *circle = [[UIImageView alloc] initWithFrame:frame];
circle.image = [UIImage imageNamed:@"china"];
circle.contentMode = UIViewContentModeScaleAspectFill;
circle.backgroundColor = [UIColor clearColor];
circle.layer.borderWidth = 1;
circle.layer.borderColor = [UIColor grayColor].CGColor;
circle.layer.masksToBounds = YES;
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGRect maskRect = CGRectMake(0, 0, w, w);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, nil, maskRect);
maskLayer.path = path;
CGPathRelease(path);
circle.layer.mask = maskLayer;
circle.frame = initialFrame;
[self.imageView addSubview:circle];
[UIView animateWithDuration:1.0 animations:^{
circle.frame = frame;
}];
He tratado simplemente trabajar con el cornerRadius
del CALayer
, pero que no conduce a resultados satisfactorios, ya sea, como el radio tendría que cambiar el tamaño de la trama también.
¡Brillante! Gracias particularmente por su esfuerzo de documentación. Esta es una gran explicación y accionable. Ahora trabajo como estaba previsto. – Mundi