Я пытаюсь реализовать пользовательский элемент управления в соответствии с official docПочему ограничения просмотра в StackView не работают?
Проблема в том, что UIButton объект, помещенный в HorizontalStackVIew заполняет все его пространство, игнорируя свои кнопки ограничения (ширина = 4,0 высота = 4,0). (Я пробовал с VerticalStackVIew и UITextView и другие, но это то же самое)
class MyControl: UIStackView {
override init(frame: CGRect) {
super.init(frame: frame)
setupButtons()
}
required init(coder: NSCoder) {
super.init(coder: coder)
setupButtons()
}
private func setupButtons() {
// Create the button
let button = UIButton()
button.backgroundColor = UIColor.red
// Add constraints
button.translatesAutoresizingMaskIntoConstraints = false
button.heightAnchor.constraint(equalToConstant: 4.0).isActive = true
button.widthAnchor.constraint(equalToConstant: 4.0).isActive = true
// Add the button to the stack
addArrangedSubview(button)
}
И у меня есть этот журнал, но не знаю, что делать с ним:
2017-02-10 16 : 59: 31.900999 MyControl [1835: 91456] [LayoutConstraints] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. ( "", "", "", "" )
будет пытаться восстановить разбив Constraint
сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging в списке UIView, также могут быть полезны. 2017-02-10 16: 59: 31.950461 MyControl [1835: 91456] [LayoutConstraints] Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. ( "", "", "", "" )
будет пытаться восстановить разбив Constraint
сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging в списке UIView, также могут быть полезны.
Xcode 8.2.1
спасибо за ответ. но это не помогло. потому что это похоже на проблему в представлении стека –