1

Core Graphics を使用して CALayer に描画する方法を理解しようとしています。これまでのところ、コントローラー オブジェクトをレイヤーのデリゲートとして設定し、コントローラーで CG コマンドを呼び出す必要があることはわかっていると思います。

私の問題は、現在のコードでこれを行う方法が本当にわからないことです。

理想的には、CAAnimation を使用してそれらをアニメーション化できるように、すべてに異なる CG 描画を含む多くの異なるレイヤーが必要です。現在、アニメーションを含む作業レイヤーがいくつかありますが、CG コンテンツはありません。これらすべてのレイヤーを同じデリゲートに設定し、if ステートメントを使用して各レイヤーを呼び出して描画しようとしています。これは可能ですか?または、これを行うためのより簡単な方法があると思いますか?私はまだこれらの概念にかなり慣れていないので、どんな助けでも大歓迎です。

これが私の関連コードです:

私のTapView.hで

@interface TapView : UIView
{
    CALayer *circleGlowLayer;

}
-(void)glowCircleTap;
@property (nonatomic) float opacity;
@end

私のTapView.mで

@implementation TapView

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self glowCircleTap];
}
-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];

   if(self)
    {
        circleGlowLayer = [[CALayer alloc]init];
        [circleGlowLayer setBounds:CGRectMake(0.0,0.0,470.0,470.0)];
        [circleGlowLayer setPosition:self.center];

        UIColor *transparent = [UIColor colorWithRed:0.53 green:0.85 blue:0.89 alpha:1.0];
        CGColorRef cgTransparent = [transparent CGColor];
        [circleGlowLayer setBackgroundColor:cgTransparent];

        [[self layer] addSublayer:circleGlowLayer];
        [circleGlowLayer setOpacity:0.0];
    }
    return self;
}
-(void)glowCircleTap
{


    CAKeyframeAnimation *glowCircleFader = [CAKeyframeAnimation     animationWithKeyPath:@"opacity"];
    [glowCircleFader setValues:[NSArray arrayWithObjects:
                            [NSNumber numberWithFloat:1.0],
                            [NSNumber numberWithFloat:0.0], nil]];

    [glowCircleFader setDuration:0.5];
    [circleGlowLayer addAnimation:glowCircleFader forKey:@"fadeAnimation"];
}
@end

今のところ、このコードは画面をタップすると四角形を描画し、0.5 秒かけてフェードアウトします。このレイヤーに描画できるようにしたいと思います。

デリゲートを作成しようとして、TapViewDelegate クラスを作成し、TapView の -init で作成しまし[circleGlowLayer setDelegate:TapViewDelegate];た。そして、ここで少し迷子になります。さらに、これが近い場合、すべてのレイヤーをこの 1 つのデリゲートに設定できますか? 問題は、デリゲートのアイデアがまだ頭に浮かんでいないことだと思います。助けてくれてありがとう!

4

0 に答える 0