【发布时间】:2026-01-09 05:35:01
【问题描述】:
我正在尝试使用 CALayers 制作甜甜圈形状。一个 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;
}
我试过像这样设置大圆圈的超级层 nil:
CALayer *theSuper = circle.superlayer;
theSuper = nil;
但这并没有什么不同。
我也尝试将 Circle 的 masksToBounds 属性设置为 YES 和 NO,但没有任何区别。
有什么想法吗?
【问题讨论】:
标签: ios uiview core-animation calayer