我正試圖用CALayers製作一個甜甜圈形狀。一個CALayer將成爲一個大圓圈,另一個將成爲一個位於其中心的小圓圈,掩蓋它。用另一個CALayer掩蓋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;
}
我已經嘗試設置大圈的superlayer零這樣的:
CALayer *theSuper = circle.superlayer;
theSuper = nil;
但它沒有什麼不同。
我也試過圈的masksToBounds
屬性設置爲YES和NO,但它並沒有發揮作用。
有什麼想法?