2016-08-17 5 views
0

Я хочу программно центрировать представление как по вертикали, так и по горизонтали внутри UIContinerView. Так что я попытался ..ios: центр вертикально не работает внутри 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) 

Но это то, что я получаю (на скриншоте ниже), очевидно, что он не является центром по вертикали. ContainerView - это область под TabBar в нижней части экрана. Без ContainerView работает приведенный выше код.

Я попытался добавить ограничивающие центры по вертикали и горизонтали в раскадровке. то он работает, но не programaticlly ... пожалуйста, помогите

enter image description here

Я также попытался:

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

но тот же эффект

+0

Если вы вызывают его в ' viewDidLoad', то размер представления, вероятно, не является окончательным. Я бы предложил либо использовать ограничения, либо установить центр в 'viewDidLayoutSubviews'. – EmilioPelaez

ответ

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

или

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

Я передаю ссылку ViewController на другую функцию. Вот почему я добавил controller.View – HeisenBerg

+0

, если вы делаете 'View.AddSubview (view)', центр должен быть 'View''a center –

+0

Ну, это была ошибка, которую я сделал при редактировании кода для создания этой темы , Я сейчас поправил. – HeisenBerg

Смежные вопросы