В вашем текущем коде вы сохраняете GState
текущего контекста, настраиваете его для рисования тени ... и восстанавливаете его до того, что было до того, как вы настроили его для рисования тени. Затем, наконец, вы вызываете реализацию суперкласса drawRect
:.
Любой рисунок, на который должна влиять настройка тени, должен произойти после
CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5);
но до
CGContextRestoreGState(currentContext);
Так что, если вы хотите, чтобы drawRect:
суперкласса был "обернут" в тень, то как насчет того, чтобы переставить ваш код следующим образом?
- (void)drawRect:(CGRect)rect {
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5);
[super drawRect: rect];
CGContextRestoreGState(currentContext);
}