Я использую 26 букв алфавита и создаю UIButton
с соответствующей буквой, после создания массива UIButtons
я отправляю массив, в котором я храню эти кнопки, и добавляю его в представление стека ,
Вид стека также находится внутри UIView
, который называется abcBtnView
.
Это работает, если я передаю ему весь массив UIButton
, но 26 кнопок по вертикали или по горизонтали выглядят не очень хорошо. Поэтому я решил вместо отправки массива из 26 кнопок отправить 6 массивов, 5 с 5 UIbuttons
и один массив с 1 кнопкой.
Ошибка, которую я получаю, заключается в том, что я не могу преобразовать UIButton
в тип UIView
.
Параметр UIStackview(arrangedSubviews: [UIView])
имеет тип [UIView]
, однако он все равно занял мой массив [UIButton]
в первый раз, но он не будет принят, если я добавлю более одного массива UIbuttons
.
Мне интересно, как я могу добавить несколько массивов UIButton в UIStackview, чтобы у меня было 6 столбцов и 5 строк UIButton?
ДУМАЕТ, ЧТО Я ПОПРОБОВАЛ:
- Попробуйте ввести [UIButton] в [UIView]
- Создает массив, который содержит массив UIButtons, а затем ИСПОЛЬЗУЕТСЯ
цикл for для добавления каждого UIstackview в наше представление (abcBtnView).
КОД НИЖЕ РАБОТАЕТ, НО Я МОГУ ТОЛЬКО ПРОЙТИ В ОДНОМ UIBUTTON.
private func makeABCbtns(){
let abcde = createButtons(named: "A", "B", "C", "D", "E")
let fghij = createButtons(named: "F", "G", "H", "I", "J")
let klmno = createButtons(named: "K","L", "M", "N", "O")
let pqrst = createButtons(named: "P", "Q","R", "S", "T")
let uvwxy = createButtons(named: "U", "V", "W","X", "Y")
let z = createButtons(named: "Z")
let stackView = UIStackView(arrangedSubviews: abcde)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .horizontal
stackView.spacing = 1
stackView.distribution = .fillEqually
// UIView where all the buttons will be in.
abcBtnView.addSubview(stackView)
//I am giving the stackview the size of the abcBtnView.
stackView.anchor(top: abcBtnView.topAnchor,
leading: abcBtnView.leadingAnchor,
bottom: abcBtnView.bottomAnchor,
trailing: abcBtnView.trailingAnchor,
centerXaxis: nil,
centerYaxis: nil)
}
func createButtons(named: String...) -> [UIButton]{
return named.map { letter in
let button = UIButton()
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitle(letter, for: .normal)
button.backgroundColor = .green
button.setTitleColor( .blue , for: .normal)
return button
}
}