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?