Да, вы можете сделать это, делая разные альфа-значения для каждого слоя,
в основном внутренний слой (супер) должен иметь как минимум значение альфа 0,7, а внешний слой (подслой) должен иметь значение альфа меньше, чем его родитель, скажем, 0,3
Тогда внешний слой должен раскрыть внутренний слой.
Но если вы хотите сделать лучшее откровение, вы можете нарисовать внешний слой, установив на нем радиальный градиент.
Это мой пример кода, но я не нарисовал радиальный градиент для внешнего слоя.
//
CALayer *innnerLayer = [CALayer layer];
innnerLayer.borderColor = [UIColor greenColor].CGColor;
innnerLayer.borderWidth = 0.8f;
innnerLayer.backgroundColor = [UIColor colorWithWhite:0. alpha:0.5].CGColor;
innnerLayer.frame = CGRectMake(70.0, 150.0f, 100.0f, 100.0f);
CALayer *outLayer = [CALayer layer];
outLayer.frame = innnerLayer.bounds;
outLayer.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.3f].CGColor;
// add outer layer to inner layer
[innnerLayer addSublayer:outLayer];
// add the inner layer to main view
[self.view.layer addSublayer:innnerLayer];
// Экспериментируйте с разными значениями альфа, но externalAlpha