2016-07-06 3 views
3

Я не могу установить ограничения на две кнопки рядом друг с другом. Мне нужна эта кнопка в середине UIView. См. Ниже изображение enter image description hereУстановить два ограничения UIButton?

Может ли кто-нибудь знать, как установить эти ограничения кнопок?

ответ

0

Это меньше информации для работы, но вы можете добавить ограничение программно, чтобы добавить ограничение на левое пространство - х, чтобы добраться до середины страницы. Вы можете также получить две кнопки в небольшом зрения, облегчат для выравнивания в середине

+0

Используйте мнение альтернативный вариант, я ищу решение для установки ограничений. Можете ли вы показать мне пример, чтобы программно установить ограничение для этих кнопок. Какая еще информация вам нужна? – nadim

1

Вы можете сделать это:

  • Определить расстояние по горизонтали для двух кнопок, давайте скажем, 10 для Exemple
  • Установить центр по горизонтали на левую кнопку на вид сверху, и на этом ограничении установить множитель 1/2

(не забудьте недостающие ограничения, такие как верхнее пространство между вашей пуговицей и вид сверху)

EDIT Я НЕ рекомендую добавлять бесполезные виды в качестве контейнеров. Это плохая практика. Множители - это путь.

1
  1. встраивать эти 2 мнения в целях (в конструкторе, просто выберите две точки зрения, а затем из меню Xcode выбрать редактор -> Код для вставки в -> Вид)
  2. применить ограничение по мнению контейнера для того, центрировать вид по горизонтали в контейнере
  3. в конце концов, вы можете применить верхнее ограничение по мнению контейнера между собой и зрениями ViewController в
2

Вам НЕ нужно создать дополнительный UIView, чтобы решить эту проблему!

Из UILayoutGuide документов:

Есть целый ряд расходов, связанные с добавлением фиктивных просмотров вашего зрения иерархии. Во-первых, есть затраты на создание и поддержание самого представления. Во-вторых, фиктивный вид является полноправным членом иерархии представлений, что означает, что он добавляет служебные данные для каждой задачи, выполняемой иерархией. Хуже всего, невидимый фиктивный вид может перехватывать сообщения, предназначенные для других представлений, что вызывает проблемы, которые очень трудно найти.

Вы можете использовать UILayoutGuide s для этого; вместо добавления кнопок в ненужный UIView. Вы помещаете UILayoutGuide с левой и правой сторон кнопок и устанавливаете их ширину равными. Это будет центрировать кнопки. Вот как сделать это в коде:

view.addSubview(button1) 
view.addSubview(button2) 

let leftSpace = UILayoutGuide() 
view.addLayoutGuide(leftSpace) 

let rightSpace = UILayoutGuide() 
view.addLayoutGuide(rightSpace) 

let views = [ 
    "leftSpace" : leftSpace, 
    "button1" : button1, 
    "button2" : button2, 
    "rightSpace" : rightSpace 
] 

NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[leftSpace][button1]-[button2][rightSpace]|", options: [], metrics: nil, views: views)) 
leftSpace.widthAnchor.constraintEqualToAnchor(rightSpace.widthAnchor).active = true 

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

EDIT для Objective-C

[self.view addSubview:button1]; 
[self.view addSubview:button2]; 

UILayoutGuide *leftSpace = [[UILayoutGuide alloc] init]; 
[self.view addLayoutGuide:leftSpace]; 

UILayoutGuide *rightSpace = [[UILayoutGuide alloc] init]; 
[self.view addLayoutGuide:rightSpace]; 

NSDictionary* views = @{ 
         @"leftSpace" : leftSpace, 
         @"button1" : button1, 
         @"button2" : button2, 
         @"rightSpace" : rightSpace 
         }; 

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[leftSpace][button1]-[button2][rightSpace]|" options:0 metrics:nil views:views]]; 

[[leftSpace.widthAnchor constraintEqualToAnchor:rightSpace.widthAnchor] setActive:YES]; 
+0

вы предполагаете, что он использует swift, но он ничего не сказал об этом – ddb

+0

Вы можете сделать то же самое в немного другом синтаксисе с помощью Objective-C. – keithbhunter

+0

@ddb, вы должны проверить историю изменений вопроса. заголовок вопроса сказал Свифт перед тем, как быть отредактированным Эриком – Shubhank

3

Здесь я поставил ограничение на то же самое:

1) встраивать кнопки в UIView & установить ограничение для этой точки зрения. enter image description here

2) Установить ограничение для первой кнопки enter image description here

3) Установить ограничение для второй кнопки enter image description here

1

Выберите обе кнопки и вставлять эти две кнопки в UIView, embed UIView
Горизонтальный центр выровнен UIView, Установите ширину, высоту и верхнюю границу для UIView.

вы получите это:

enter image description here

Sample project for this

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