Я пытаюсь добавить layoutMargins к некоторым элементам в UIStackView
, который я создаю в коде. Я пробовал то же самое в IB, и оно отлично работает, но когда я добавляю layoutMargins
и я устанавливаю isLayoutMarginsRelativeArrangement = true
, тогда выравнивание моего стекового представления нарушается.
Код моего стекового представления следующий:
@objc lazy var buttonsStackView: UIStackView = {
let stack = UIStackView(arrangedSubviews: [doneButton, separatorView, giftButton])
stack.layoutMargins = UIEdgeInsets(top: 0, left: 4, bottom: 0, right: 4)
stack.isLayoutMarginsRelativeArrangement = true
stack.axis = .horizontal
stack.frame = CGRect(x: 0, y: 0, width: 150, height: 44)
stack.spacing = 4
stack.distribution = .equalCentering
stack.alignment = .center
let bgView = UIView(frame: stack.bounds)
stackViewBackground = bgView
bgView.backgroundColor = ColorManager.shared.grayColor
bgView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
stack.insertSubview(bgView, at: 0)
separatorView.heightAnchor.constraint(equalTo: stack.heightAnchor, multiplier: 0.8).isActive = true
return stack
}()
SeparatorView имеет ограничение ширины всего лишь 1pt, в то время как две кнопки оставлены без ограничений для сохранения их intrinsicContentSize
.
Вот как выглядит мой stackView, когда isLayoutMarginsRelativeArrangement
равен false
:
Но очевидно, что необходимы левое и правое поля, поэтому при установке isLayoutMarginsRelativeArrangement
на true
разрывы выравнивания моего стека:
К сожалению, я не могу использовать IB для этого конкретного представления, и мне нужно инициализировать его из кода. Любая идея о том, как это исправить, очень ценится. Спасибо!