Обновление на основе разговора в комментариях
Во-первых, эта строка:
CustomLayer *customLayer= [CALayer layer];
должна использовать ваш CustomLayer:
CustomLayer *customLayer= [CustomLayer layer];
Тем не менее, установка customLayer в качестве своего собственного делегата немного странна, возможно, вы действительно сталкиваетесь с кодом, предотвращающим это.
Вы пытались использовать метод - (void)drawInContext:(CGContextRef)ctx
?Как правило, каждый метод CALayerDelegate имеет соответствующий метод CALayer, который можно переопределить в подклассах.
-(void) drawInContext:(CGContextRef)ctx
{
NSLog(@"drawLayer:inContext");
CGContextBeginPath (ctx);
CGContextAddEllipseInRect(ctx, self.frame);
CGContextClosePath (ctx);
CGContextClip (ctx);
// Note: this is where your original code ended, you have successfully set up a clipping path, but you haven't drawn anything to actually get clipped!
CGContextSetRGBFillColor(context, 0, 0.6, 0.2, 0.4);
CGContextFillRect(context, self.bounds);
}
Кроме того, вы устанавливаете рамку (bounds / position // center) экземпляра CustomLayer?Я вижу, вы добавляете его в иерархию слоев, но с размером по умолчанию 0,0.