Добавление двух кнопок в UIStackView по горизонтали, одна покрывает другую - PullRequest
0 голосов
/ 06 апреля 2020

Итак, я пытаюсь добавить две кнопки одинаковой ширины к моему виду рядом друг с другом. Я использовал представление стека, так как думал, что это будет работать лучше. Вторая кнопка с именем «Сортировка» видна только одной при правильной ширине, но закрывает мою кнопку «Добавить», оставляя пустое пространство рядом с ней. Я запустил его без кнопки «Сортировка», и у меня просто появляется кнопка «Добавить», показывающая весь вид стека, как я и ожидал, немного смущенный, но это. Код ниже не уверен, что с ним происходит. Если вы думаете, что лучше не использовать stackView, вам нужно лишь немного советов о том, как лучше справиться с ограничениями. Спасибо всем. И просто сказать, что я работаю только в программе c с этим.

import UIKit

class PlacesVC: UIViewController {


let topTitle = UILabel()
let logoImage = UIImage(named: "DIYCoffeeLogoDark")
let logoImageView = UIImageView()
let addButton = UIButton()
let sortButton = UIButton()
let buttonStack = UIStackView()

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = #colorLiteral(red: 0.9324248433, green: 0.9268818498, blue: 0.9366856217, alpha: 1)
    logoImageView.image = logoImage
    self.navigationItem.titleView = logoImageView
    self.navigationController?.navigationBar.isHidden = false
    view.addSubview(topTitle)
    view.addSubview(buttonStack)
    setUpTopTital()
    setUpButtonStack()

}

func setUpTopTital() {
    topTitle.translatesAutoresizingMaskIntoConstraints = false
    topTitle.font = UIFont(name: "Futura", size: 25)
    topTitle.text = "Your Saved Places"
    topTitle.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
    topTitle.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
    topTitle.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true
    topTitle.heightAnchor.constraint(equalToConstant: 30).isActive = true
}

func setUpButtonStack() {
    buttonStack.translatesAutoresizingMaskIntoConstraints = false
    buttonStack.addArrangedSubview(addButton)
    buttonStack.addArrangedSubview(sortButton)
    buttonStack.distribution = .fillProportionally
    buttonStack.alignment = .center
    buttonStack.axis = .horizontal
    buttonStack.spacing = 20
    buttonStack.topAnchor.constraint(equalTo: topTitle.bottomAnchor, constant: 20).isActive = true
    buttonStack.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    buttonStack.widthAnchor.constraint(equalToConstant: view.frame.width - 40).isActive = true
    buttonStack.heightAnchor.constraint(equalToConstant: 30).isActive = true
    setUpAddButton()
    setUpSortButton()
}

func setUpAddButton() {
    addButton.translatesAutoresizingMaskIntoConstraints = false
    addButton.titleLabel?.font = UIFont(name: "Futura", size: 20)
    addButton.setTitle("ADD", for: .normal)
    addButton.backgroundColor = #colorLiteral(red: 0.3176470697, green: 0.07450980693, blue: 0.02745098062, alpha: 1)
    addButton.layer.cornerRadius = 5
    addButton.setTitleColor(.white, for: .normal)
}

func setUpSortButton() {
    addButton.translatesAutoresizingMaskIntoConstraints = false
    addButton.titleLabel?.font = UIFont(name: "Futura", size: 20)
    addButton.setTitle("SORT", for: .normal)
    addButton.backgroundColor = #colorLiteral(red: 0.3176470697, green: 0.07450980693, blue: 0.02745098062, alpha: 1)
    addButton.layer.cornerRadius = 5
    addButton.setTitleColor(.white, for: .normal)
}

1 Ответ

0 голосов
/ 06 апреля 2020

В обеих функциях setUpAddButton () и setUpSortButton () вы используете одну и ту же кнопку, которая является addButton.

Измените addButton на sortButton внутри setUpSortButton (), после чего вы сможете увидеть обе кнопки в вашем стеке.

func setUpSortButton() {
    sortButton.translatesAutoresizingMaskIntoConstraints = false
    sortButton.titleLabel?.font = UIFont(name: "Futura", size: 20)
    sortButton.setTitle("SORT", for: .normal)
    sortButton.backgroundColor = #colorLiteral(red: 0.3176470697, green: 0.07450980693, blue: 0.02745098062, alpha: 1)
    sortButton.layer.cornerRadius = 5
    sortButton.setTitleColor(.white, for: .normal)
}
...