Маскировка CALayer с другим CALayer

Я пытаюсь сделать пончик с помощью CALayers. Один CALayer будет большим кругом, другой будет меньшим кругом, расположенным в его центре, маскируя его.

Большой круг отображается нормально, но всякий раз, когда я звонюcircle.mask = circleMask; тогда представление кажется пустым.

Вот мой код:

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;
}

Я пытался установить суперслой большого круга nil следующим образом:

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

Но это не имело значения.

Я также пытался установить кругmasksToBounds свойство ДА и НЕТ, но это не имеет значения.

Какие-нибудь мысли?

Ответы на вопрос(4)

Ваш ответ на вопрос