2016-08-17 1 views
0

Je souhaite centrer une vue à la fois verticalement et horizontalement dans un UIContinerView. Donc j'ai essayé ..ios: centre ne fonctionnant pas verticalement à l'intérieur de UIContainerView

UIView view = new UIView(new CGRect(0,0,100,100)); 
view.Center = new CGPoint(controller.View.Bounds.GetMidX(), controller.View.Bounds.GetMidY()); 
view.BackgroundColor = UIColor.Orange; 
controller.View.AddSubview(view) 

Mais c'est ce que je reçois (dans la capture d'écran ci-dessous) clairement ce n'est pas le centre vertical. ContainerView est la zone située sous le TabBar en bas de l'écran. Sans ContainerView, le code ci-dessus fonctionne.

J'ai essayé d'ajouter des contraintes centre vertical et horizontal dans le storyboard. il fonctionne mais pas programaticlly ... s'il vous plaît aider

enter image description here

J'ai aussi essayé:

CGPoint center = view.Center; 
center.X = controller.View.Center.X; 
center.Y = controller.View.Center.Y; 
view.Center = center; 

mais même effet

+0

Si vous appelons-le dans ' viewDidLoad', la taille de la vue n'est probablement pas la dernière. Je suggère soit d'utiliser des contraintes, soit de placer le centre dans 'viewDidLayoutSubviews'. – EmilioPelaez

Répondre

0
view.Center = new CGPoint(controller.View.Bounds.GetMidX(), controller.View.Bounds.GetMidY() - TabBarHeight/2); 

ou

view.Center = containterView.center 
containterView.AddSubview(view) 
+0

Je passe une référence de ViewController à une autre fonction. C'est pourquoi j'ai ajouté controller.View – HeisenBerg

+0

si vous faites 'View.AddSubview (view)', centre devrait être le 'View''a centre –

+0

Eh bien, c'était une erreur que j'ai faite en éditant le code pour créer ce sujet . J'ai corrigé maintenant. – HeisenBerg