2015-03-17 1 views
0

J'essaie d'utiliser drawRect pour dessiner un rectangle dans l'espace en dessous d'un collectionView contenu dans une autre vue (auto dans le code ci-dessous) en utilisant les cadres des deux vues pour définir le rectangle.Comment appeler drawRect après une animation de rotation d'orientation est terminée

Ce code fonctionne correctement jusqu'à ce que l'orientation de l'appareil change. Tout ce que j'ai essayé appelle drawRect avant le début de la rotation animée. Cela signifie que collectionView.frame et self.frame n'ont pas encore été ajustés par autoLayout et que le rectangle résultant est erroné.

CGRect frame = self.collectionViwOutlet.frame; 
CGFloat x = frame.origin.x; 
CGFloat y = frame.origin.y + frame.size.height + 8; 
CGFloat w = frame.size.width; 
CGFloat h = self.frame.origin.y + self.frame.size.height - y - 8; 
CGRect drawableRect = CGRectMake(x, y, w, h); 

Toutes les suggestions seraient appréciées.

+0

http://stackoverflow.com/q/2526162/1402846 – Pang

Répondre

1

Sur votre commande UIView passer outre il layoutSubviews, qui sera appelé pour vous par le système uniquement en cas de besoin et lorsque toutes les variables (orientation, taille, etc.)

PS .: Considérez cela: https://stackoverflow.com/a/19505582/846780

+0

Merci. Ceci explique le problème. Je cherche toujours un moyen de contourner cela. –

+0

J'ai compris. Je vous remercie. –