Вы никогда не должны изменять делегата слоя UIView.Из документации свойства слоя UIView:
Предупреждение. Поскольку представление является делегатом слоя, вы никогда не должны устанавливать представление в качестве делегата другого объекта CALayer.Кроме того, вы никогда не должны изменять делегата этого слоя.
Если вы хотите сделать пользовательское рисование в виде, просто переопределите метод drawRect:
Если вы хотите использоватьСлои, которые вам нужно создать:
UIView *myView = ...
CALayer *myLayer = [CALayer layer];
myLayer.delegate = self;
[myView.layer addSublayer:myLayer];
В обоих случаях вам нужно вызвать setNeedsDisplay для вида в первом случае и для вашего пользовательского слоя во втором.Вы никогда не вызываете drawRect: или drawLayer: inContext: напрямую, они вызываются автоматически при вызове setNeedsDisplay.