Как установить ограничение с использованием процента?
Просто очень прямой вопрос, но мы потратили много часов, пытаясь найти рабочее решение, но не смогли.
В Xcode, раскадровке, как установить ограничение, чтобы одно представление могло быть расположено 30% от общей высоты окна от вершины супервизора? И нам нужно, чтобы это было так для ВСЕХ поддерживаемых устройств iOS всех ориентаций.
Пожалуйста, смотрите мою иллюстрацию. ![enter image description here]()
Ответы
Ответ 1
Update
Извините, я неправильно понял вашу проблему.
Вам нужно будет добавить ограничения из кода следующим образом (xConstraint
является полностью произвольным, но для однозначного макета вам необходимо определить x, y позиции, ширину и высоту):
@IBOutlet weak var imageView: UIImageView!
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let yConstraint = NSLayoutConstraint(item: imageView, attribute: .Top, relatedBy: .Equal, toItem: view, attribute: .Top, multiplier: 1, constant: view.bounds.height / 3)
let xConstraint = NSLayoutConstraint(item: imageView, attribute: .Leading, relatedBy: .Equal, toItem: view, attribute: .Leading, multiplier: 1, constant: 30)
NSLayoutConstraint.activateConstraints([yConstraint, xConstraint])
}
Таким образом, уравнение будет:
imageView.top = 1 * view.top + (view.width / 3)
Оригинальный ответ
В Auto Layout используется следующее уравнение для ограничений:
aView.property = Multiplier * bView.property + Constant
На основании этого вы можете просто добавить ограничение ширины/высоты, а затем добавить множитель:
![enter image description here]()
Итак, уравнение будет:
view.height = 0.3 * superView.height + 0
Ответ 2
Я демонстрирую это ниже - вам просто нужно изменить значение множителя.
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответ 3
Вы должны рассчитать его.
1. Рассчитайте, сколько процентов находится от вершины к центру ImageView
2. Установите вертикальный центр в ImageView
3. Настройте множитель в вертикальном центральном ограничении и установите множитель из 1
Например: множитель 0.5 будет составлять 25% от вершины к центру ImageView. Таким образом, ваш множитель будет ~ 0,6
Кстати, есть и другой способ:
1. Создайте прозрачный вид сверху для вашего изображения.
2. Установите высоту, равную вашему subview
3. Установите множитель в 0,3 для этого ограничения высоты
4. Установите нижнее пространство из вашего изображения. Просмотр этого прозрачного представления равным нулю.
Ответ 4
В области свойств Equal Heights Constraint
вы установите множитель в "1: 3" (т.е. 30% в записи разделения).