Явные анимации на самом деле не изменяют атрибуты CALayer.
Они просто модифицируют presentationLayer , это то, что вы на самом деле видите. Когда анимация закончится, вы увидите CALayer точно таким же, каким он был до анимации.
Установив значение, подобное этому
// animating opacity
layer.opacity = newOpacityValue;
[layer addAnimation:animation forKey:@"opacity"];
вы убедитесь, что анимированные значения сохранены в модели, поэтому ваши изменения будут действовать даже после удаления анимации со слоя.
Использование removeOnCompletion = YES не является постоянным решением. Всякий раз, когда вы удаляете анимацию из слоя, он восстанавливает свое прежнее состояние.