UITableViewCell: cantos arredondados e sombra

Estou alterando a largura de um UITableViewCell para que a célula seja menor, mas o usuário ainda pode rolar pelas bordas da visualização da tabela.

override func layoutSubviews() {        
    // Set the width of the cell
    self.bounds = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, self.bounds.size.width - 40, self.bounds.size.height)
    super.layoutSubviews()
}

Então eu viro as esquinas:

cell.layer.cornerRadius = 8
cell.layer.masksToBounds = true

Tudo de bom até agora. Problema acontece com a sombra. Os limites são mascarados, portanto a sombra obviamente não aparece. Procurei outras respostas, mas não consigo descobrir como dobrar as esquinas ao longo dos limitese mostre a sombra.

cell.layer.shadowOffset = CGSizeMake(0, 0)
cell.layer.shadowColor = UIColor.blackColor().CGColor
cell.layer.shadowOpacity = 0.23
cell.layer.shadowRadius = 4

Então, minha pergunta - como reduzo a largura, arredondo os cantos e adiciono uma sombra a um UITableViewCell ao mesmo tempo?

Atualizar: Tentando a resposta de R Moyer

questionAnswers(9)

yourAnswerToTheQuestion