Не могу понять, почему мои стековые представления не располагаются вертикально - PullRequest
0 голосов
/ 24 апреля 2020

Я делал это много раз, но на этот раз по какой-то причине не сработает, как обычно. Я что-то здесь не так делаю? Я просто пытаюсь получить два представления в моем UIstackView и распределить их по вертикали. Кажется, что все перекрывают и распространяются повсюду. В какой-то момент он показывал только один вид.

My viewdidload ():

override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .red
        view.addSubview(headerView)
        view.addSubview(contentView)
        contentView.addSubview(contentStack)


        headerView.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.30).isActive = true
        headerView.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
        headerView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
        headerView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

        contentView.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.70).isActive = true
        contentView.widthAnchor.constraint(equalTo: self.view.widthAnchor,multiplier: 0.90).isActive = true
        contentView.topAnchor.constraint(equalTo: headerView.bottomAnchor,constant: 20).isActive = true
        contentView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true



    }

Мои виды и метки:

fileprivate lazy var headerView : UIView = {

        var view = UIView()
        view.translatesAutoresizingMaskIntoConstraints = false
        view.backgroundColor = .black
        return view

        }()
    fileprivate lazy var contentView : UIView = {

        var view = UIView()
        view.backgroundColor = .lightGray
        view.translatesAutoresizingMaskIntoConstraints = false

        return view

    }()

    fileprivate lazy var contentStack : UIStackView = {



        var stack = UIStackView(arrangedSubviews: [EarningsView,ListingsView,])

        stack.translatesAutoresizingMaskIntoConstraints = true
        stack.distribution = .fillEqually
        stack.alignment = .fill
        stack.axis = .vertical
//        stack.spacing = 5

        return stack

    }()
    fileprivate lazy var EarningsView : UIView = {

        let EarningsView = UIView()
        EarningsView.translatesAutoresizingMaskIntoConstraints = false
        EarningsView.backgroundColor = .blue

         EarningsView.addSubview(EarningsLabel)
         EarningsView.addViewBorder(borderColor: UIColor.black.cgColor, borderWith: 0.5, borderCornerRadius: 0.0)

        return EarningsView

    }()
    fileprivate lazy var EarningsLabel : UILabel = {
        let EarningsLabel = UILabel()
        EarningsLabel.translatesAutoresizingMaskIntoConstraints = false
        let earningsText = NSAttributedString(string: "My Earnings", attributes: self.stringAttrib)
        EarningsLabel.attributedText = earningsText
        EarningsLabel.textColor = .black
        EarningsLabel.backgroundColor = .white
        EarningsLabel.textAlignment = .center


        return EarningsLabel

    }()

    fileprivate lazy var ListingsView : UIView = {

        let ListingsView = UIView()

        ListingsView.translatesAutoresizingMaskIntoConstraints = false

        ListingsView.addSubview(ListingLabel)
        ListingsView.addViewBorder(borderColor: UIColor.black.cgColor, borderWith: 0.5, borderCornerRadius: 0.0)
        ListingsView.backgroundColor = .red
        return ListingsView
    }()
    fileprivate lazy var ListingLabel : UILabel = {
        let ListingLabel = UILabel()
        ListingLabel.translatesAutoresizingMaskIntoConstraints = false

        let listingText = NSAttributedString(string: "My Listing", attributes: self.stringAttrib)
        ListingLabel.attributedText = listingText


        return ListingLabel
    }()

Это сводит меня с ума потому что я делал это много раз раньше, и теперь я потратил как минимум 6 часов на эту маленькую часть, пытаясь понять это. Конечно, я мог бы просто создать совершенно новый view-контроллер, но я просто хочу это выяснить. Screenshot of Overlapping

1 Ответ

1 голос
/ 24 апреля 2020

EarningsView, EarningsLabel, ListingsView, ListingLabel имеют

translatesAutoresizingMaskIntoConstraints = false

Но у них нет добавленных ограничений для замены ограничений Autoresizing, поэтому они просто действуют глупо и go вплоть до верхний левый. Я видел такие вещи раньше. На мои вещи. Либо авторазмер, либо вставьте ограничения.

...