Как установить ограничение с использованием процента?

Просто очень прямой вопрос, но мы потратили много часов, пытаясь найти рабочее решение, но не смогли.

В 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% в записи разделения).