Ограничить UIView's пропорционально

Я хочу позиционировать свое мнение относительно. Я хочу использовать проценты, а не пиксели. Скажем, я хочу расположить центр кнопки на 25% от высоты ее суперпредставления. Как бы я это сделал?

Один из способов сделать это будет:

button.topAnchor.constraint( equalTo: superView.topAnchor, constant: /* compute constant "dynamically") .isActive = true

Но это кажется глупым, потому что у нас есть multiplier параметр во многих API-функциях Layout Margin.

Но все же, если я наберу button.centerYAnchor.constraintни одно из предложенных дополнений не показывает никаких функций, которые принимают multiplier аргумент кроме одного с systemSpacing во имя. Я изучил "системный интервал", но не могу понять, что он делает.

Если у меня есть это ограничение:

button.topAnchor.constraintEqualToSystemSpacingBelow(rootView.topAnchor, multiplier: 0.2).isActive = true

Представление - это просто позиция прямо под вершиной своего superView.

1 ответ

Я не нашел способ сделать это с помощью якорей макета, но вот как это сделать, создав NSLayoutConstraint непосредственно:

NSLayoutConstraint(item: button, attribute: .centerY,
    relatedBy: .equal, toItem: superView, attribute: .bottom,
    multiplier: 0.25, constant: 0).isActive = true
Другие вопросы по тегам