Я не уверен, является ли ваша проблема следующей, но она попалась мне на глаза.
[self.layer addSublayer:layer];
UIGraphicsBeginImageContext(layer.bounds.size);
[layer renderInContext:UIGraphicsGetCurrentContext()];
Похоже, у вас есть свойство в этом файле, называемое слоем, в которое вы добавляете созданный вами слой тени. Затем вы получаете контекст, основанный на текущем CALayer, в отличие от self.layer.
Я обычно использую CALayer для изменения UIImageView, и мне не нужно добавлять подслои, так что, возможно, этот код в порядке. Просто хочу указать на это, пожалуйста, дайте мне знать, если какой путь точен, как я всегда хотел бы узнать.
~ Удачи