Вид имеет неоднозначную компоновку - PullRequest
0 голосов
/ 27 июня 2018

Программно я пытаюсь создать представление стека с 5 кнопками, используя автоматическое расположение. Когда я запускаю проект, он запускается без каких-либо ошибок, но не показывает стек кнопок.

С другой стороны, в иерархии отладочных представлений отображается «Представление имеет неоднозначную компоновку». Что мне здесь не хватает.

class TestView: UIView {
var stackView = UIStackView()
override init(frame: CGRect) {
    super.init(frame: frame)
    initComponents()
}
func initComponents() {
    self.autoresizesSubviews = false
    stackView.autoresizesSubviews = false
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.distribution = .equalSpacing
    stackView.axis = .horizontal
    stackView.alignment = .fill
    stackView.contentMode = .scaleToFill
    addSubview(stackView)
    NSLayoutConstraint.activate([
        stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
        stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor),
        stackView.topAnchor.constraint(equalTo: self.topAnchor),
        stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
        ])
    for i in 0...4 {
        let button = UIButton()

        button.titleLabel?.text = "\(i)"
        button.translatesAutoresizingMaskIntoConstraints = false

        stackView.addSubview(button)

        button.heightAnchor.constraint(equalTo: stackView.heightAnchor, multiplier: 1).isActive = true
        button.widthAnchor.constraint(equalTo: button.heightAnchor, multiplier: 1).isActive = true
    }
}
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}}

В файле ViewController.swift

let frame = CGRect(x: 0, y: 0, width: 200, height: 30)
    let test = TestView.init(frame: frame)
    self.view.addSubview(test)

1 Ответ

0 голосов
/ 27 июня 2018

Мне пришлось изменить несколько вещей, чтобы сделать эту работу:

  1. Используйте button.setTitle(_:for:) для установки заголовка кнопок.
  2. Установите цвет для текста с помощью button.setTitleColor(_:for:).
  3. Установите цвет фона для ваших кнопок.
  4. Добавьте кнопки к stackView с помощью stackView.addArrangedSubview(button).

Кроме того, вы можете немного сдвинуть кадр вниз. Он находится в верхнем левом углу, над ним находится строка состояния и за меткой iPhone X.


for i in 0...4 {
    let button = UIButton()

    button.setTitle("\(i)", for: .normal)
    button.translatesAutoresizingMaskIntoConstraints = false

    // Set these colors to whatever you like
    button.setTitleColor(.black, for: .normal)
    button.backgroundColor = .red

    stackView.addArrangedSubview(button)

    button.heightAnchor.constraint(equalTo: stackView.heightAnchor, multiplier: 1).isActive = true
    button.widthAnchor.constraint(equalTo: button.heightAnchor, multiplier: 1).isActive = true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...