Я не могу установить ограничения на две кнопки рядом друг с другом. Мне нужна эта кнопка в середине UIView. См. Ниже изображение Установить два ограничения UIButton?
Может ли кто-нибудь знать, как установить эти ограничения кнопок?
Я не могу установить ограничения на две кнопки рядом друг с другом. Мне нужна эта кнопка в середине UIView. См. Ниже изображение Установить два ограничения UIButton?
Может ли кто-нибудь знать, как установить эти ограничения кнопок?
Это меньше информации для работы, но вы можете добавить ограничение программно, чтобы добавить ограничение на левое пространство - х, чтобы добраться до середины страницы. Вы можете также получить две кнопки в небольшом зрения, облегчат для выравнивания в середине
Вы можете сделать это:
(не забудьте недостающие ограничения, такие как верхнее пространство между вашей пуговицей и вид сверху)
EDIT Я НЕ рекомендую добавлять бесполезные виды в качестве контейнеров. Это плохая практика. Множители - это путь.
Вам НЕ нужно создать дополнительный 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];
вы предполагаете, что он использует swift, но он ничего не сказал об этом – ddb
Вы можете сделать то же самое в немного другом синтаксисе с помощью Objective-C. – keithbhunter
@ddb, вы должны проверить историю изменений вопроса. заголовок вопроса сказал Свифт перед тем, как быть отредактированным Эриком – Shubhank
Используйте мнение альтернативный вариант, я ищу решение для установки ограничений. Можете ли вы показать мне пример, чтобы программно установить ограничение для этих кнопок. Какая еще информация вам нужна? – nadim