4

円形マスク (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 と mask が兄弟になるようにビュー階層を構造化する別の方法があるかもしれませんが、私はそのルートに行くことができませんでした。

4

1 に答える 1

8

画像ビューを追加のプレーン UIView スーパービューに入れます。スーパービューにレイヤーマスクを設定します。画像ビューをアニメーション化します。

于 2012-05-21T08:27:04.037 に答える