Layer-based version with CABasicAnimation