Maskieren eines CALayers mit einem anderen CALayer

Ich versuche mit CALayers eine Donutform zu machen. Ein CALayer ist ein großer Kreis, der andere ein kleinerer Kreis in der Mitte, der ihn maskiert.

Der große Kreis wird gut angezeigt, aber wann immer ich anrufecircle.mask = circleMask; dann erscheint die Ansicht leer.

Hier ist mein Code:

AriDonut.h

#import <UIKit/UIKit.h>

@interface AriDonut : UIView
-(id)initWithRadius:(float)radius;
@end

AriDonut.m

#import "AriDonut.h"
#import <QuartzCore/QuartzCore.h>

@implementation AriDonut

-(id)initWithRadius:(float)radius{
    self = [super initWithFrame:CGRectMake(0, 0, radius, radius)];
    if(self){

        //LARGE CIRCLE
        CALayer *circle = [CALayer layer];
        circle.bounds = CGRectMake(0, 0, radius, radius);
        circle.backgroundColor = [UIColor redColor].CGColor;
        circle.cornerRadius = radius/2;
        circle.position = CGPointMake(radius/2, radius/2);

        //SMALL CIRLCE
        CALayer *circleMask = [CALayer layer];
        circleMask.bounds = CGRectMake(0, 0, 10, 10);
        circleMask.cornerRadius = radius/2;
        circleMask.position = circle.position;

        //circle.mask = circleMask;

        [self.layer addSublayer:circle];

    }

    return self;
}

Ich habe versucht, den Superlayer des großen Kreises auf Null zu setzen:

CALayer *theSuper = circle.superlayer;
theSuper = nil;

Aber es machte keinen Unterschied.

Ich habe auch versucht, Circle's einzustellenmasksToBounds Eigentum zu JA und NEIN, aber es machte keinen Unterschied.

Irgendwelche Gedanken?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage