updateViewConstraints () llamó dos veces después de la rotation de la pantalla

Estoy implementando un keyboard ios personalizado. Tengo un problema con las actualizaciones de las vistas del keyboard al rotar la pantalla. El problema es que la animation de la actualización no es uniforme (los tamaños de visualización y las posiciones cambian pocas veces). Creo que esto sucede porque el método updateViewConstraints() llamó dos veces después de la rotation. En mi método de anulación de updateViewConstraints() y agrego la restricción de altura del keyboard.

 let portraitHeight:CGFloat = UIDevice.currentDevice().userInterfaceIdiom == .Pad ? 315 : 264 let landscapeHeight:CGFloat = UIDevice.currentDevice().userInterfaceIdiom == .Pad ? 420 : 200 var heightConstraint: NSLayoutConstraint! override func updateViewConstraints() { super.updateViewConstraints() if (self.view.frame.size.width == 0 || self.view.frame.size.height == 0) { return } let isLandscape = !(self.view!.frame.size.width == self.screenWidth * ((self.screenWidth < self.screenHeight) ? 1 : 0) + self.screenHeight * ((self.screenWidth > self.screenHeight) ? 1 : 0)) self.inputView!.removeConstraint(self.heightConstraint) if (isLandscape) { self.heightConstraint.constant = self.landscapeHeight; self.inputView!.addConstraint(self.heightConstraint) } else { self.heightConstraint.constant = self.portraitHeight; self.inputView!.addConstraint(self.heightConstraint) } } 

¿Está bien que updateViewConstraints() llamó dos veces al rotar la pantalla? ¿Y cómo lograr una animation suave en la rotation de la pantalla?

Gracias por cualquier avance!