动画期间保持CAShapeLayer蒙版静态

时间:2012-05-21 08:19:17

标签: ios core-animation

我正在尝试在圆形遮罩(使用myImageView.layer.mask设置)中旋转UIImageView。问题是,无论何时我尝试旋转所述UIImageView,掩码都会随之旋转。这是一些代码。

设置掩码:

    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, - 169)
                                                        radius:191 
                                                    startAngle:0.0
                                                      endAngle:2*M_PI 
                                                     clockwise:YES];    

    CAShapeLayer *shapeLayer  = [CAShapeLayer layer];
    [shapeLayer setFrame:myImageView.bounds];
    [shapeLayer setPath:[path CGPath]];
    myImageView.layer.mask = shapeLayer;

动画:

[UIView animateWithDuration:kRotationTime animations:^(void){        
    myImageView.transform = CGAffineTransformMakeRotation(angle);
}];

基本上就是这一切。 UIImageView在固定位置的圆形遮罩内绕其自身中心旋转 - 这是所需的效果。也许有另一种方法来构建视图层次结构,以便myImageView和掩码是兄弟姐妹,但我没有运气那条路。

1 个答案:

答案 0 :(得分:8)

将图像视图放入另一个普通的UIView超级视图中。在superview上设置图层蒙版。为图像视图设置动画。