Мой первый пост, поэтому я надеюсь, что я делаю правильные вещи.
У меня есть пользовательский UIView, который содержит массив пользовательских UIButtons.
Я переопределил func draw (_ rect: CGRect), который имеет следующий код:
override func draw(_ rect: CGRect) {
// remove all buttons currently on the bar
self.subviews.forEach { $0.removeFromSuperview() }
// process all buttons that are not hidden
var i = 0
for btn in buttons {
if !btn.button.isHidden {
self.addSubview(btn.button)
// set constraints with SnapKit
btn.button.snp.makeConstraints { (c) in
c.size.equalTo(buttonSize)
c.left.equalToSuperview().offset(padding.width + (isVertical ? 0 : (i * buttonSize.width)))
c.top.equalToSuperview().offset(padding.height + (isVertical ? (i * buttonSize.height) : 0))
}
i += 1
}
}
// set button bar's constraints
snp.updateConstraints { (c) in
if isVertical {
c.height.equalTo(max(visibleCount, 1) * buttonSize.height + 2 * padding.height)
} else {
c.width.equalTo(max(visibleCount, 1) * buttonSize.width + 2 * padding.width)
}
}
}
Всякий раз, когда я выполняю setNeedsLayout (), он работает, как ожидалось, однако он также центрирует UIImage в том же суперпредставлении.
Это вызывает проблемыпоскольку UIImage можно панорамировать и перецентрировать, это не ожидаемое поведение.
Я проверил приведенный выше код, комментируя различные разделы, и обнаружил, что именно когда он позиционирует сами кнопки, он вызывает такое поведение.
Конечно, это не то поведение, которое мне нужно.
Любая помощь / идеи / предложения приветствуются.
Порядок добавления подпредставлений в ViewController такой...
private func setupViews() {
view.backgroundColor = .green
view.addSubview(mapDisplay)
view.addSubview(contextMenu)
view.addSubview(FloatingMenu)
}