Estoy tratando de hacer una forma de donut con CALayers. Un CALayer será un círculo grande, el otro será un círculo más pequeño colocado en su centro, enmascarando.Enmascaramiento de un CALayer con otro CALayer
El círculo grande se muestra bien, pero cada vez que llamo al circle.mask = circleMask;
, 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 tratado de establecer nula superlayer del círculo grande como esto:
CALayer *theSuper = circle.superlayer;
theSuper = nil;
Pero no hizo la diferencia.
También intenté configurar la propiedad masksToBounds
de Circle para YES y NO, pero no hizo la diferencia.
¿Alguna idea?