Ich versuche mit CALayers eine Doughnut-Form herzustellen. Ein CALayer wird ein großer Kreis sein, der andere wird ein kleinerer Kreis sein, der in seiner Mitte positioniert ist und ihn maskiert.Einen CALayer mit einem anderen CALayer maskieren
Der große Kreis zeigt gut, aber wenn ich circle.mask = circleMask;
rufe, 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 den großen Kreis der Superlayer nil wie dieser Einstellung versucht haben:
CALayer *theSuper = circle.superlayer;
theSuper = nil;
Aber es machte keinen Unterschied.
Ich habe auch versucht, Circle masksToBounds
Eigenschaft auf JA und NEIN, aber es machte keinen Unterschied.
Irgendwelche Gedanken?