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

avatar
Alex Bollbach
7 апреля 2018 в 23:09
60
1
0

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

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

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

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

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

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

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

Вид находится прямо под верхней частью своего супервида.

Источник

Ответы (1)

avatar
vacawama
8 апреля 2018 в 11:10
0

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

NSLayoutConstraint(item: button, attribute: .centerY,
    relatedBy: .equal, toItem: superView, attribute: .bottom,
    multiplier: 0.25, constant: 0).isActive = true