Enmascarando un CALayer con otro CALayer
Estoy tratando de hacer una forma de rosquilla con CALayers. Un CALayer será un círculo grande, el otro será un círculo más pequeño colocado en su centro, enmascarándolo.
El círculo grande se muestra bien, pero cuando llamocircle.mask = circleMask;
entonces la vista aparece vacía.
Aquí está mi código:
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;
}
He intentado configurar el superlayer nil del gran círculo de esta manera:
CALayer *theSuper = circle.superlayer;
theSuper = nil;
Pero no hizo una diferencia.
También traté de establecer el círculo demasksToBounds
propiedad a SÍ y NO, pero no hizo una diferencia.
¿Alguna idea?