Cela fait partie de la façon dont Core Animation anime les transitions. Un instantané de votre vue est pris, puis étiré/déplacé dans le nouvel emplacement.
Il y a plusieurs façons de résoudre ce problème. Tout d'abord vous pouvez essayer ceci:
self.contentMode = UIViewContentModeRedraw;
Cela pourrait être tout ce que vous avez besoin et dire Core Animation pour redessiner votre contenu au lieu d'utiliser un instantané. Si vous avez toujours des problèmes, vous pouvez essayer de définir une région "extensible" qui est étirée à la place de votre texte. Par exemple, si vous savez que vous avez une coupe verticale de votre vue où il n'y a jamais de texte, vous pouvez définir l'étirement du contenu dans cette petite section et tout étirement ne s'y produira que si vous gardez votre texte intact.
CGFloat stretchStartX = 25.0f;
CGFloat stretchEndX = 30.0f;
/* Content stretch values are from 0.0-1.0, as a percentage of the view bounds */
self.contentStretch = CGRectMake(stretchStartX/self.bounds.size.width,
0.0f,
stretchEndX/self.bounds.size.width,
1.0f);
Cela provoque la vue pour être étirées seulement entre les valeurs x 25 et 30.