olehart
olehart

Reputation: 1

Displaying stack view not from top

Struggling on this question second day. I am facing problem with displaying stack view into scroll view. My main problem is that when I open detail view with content it starts to display all information approximately from the middle of all content Here is an image: Here is an image:

class DetailViewController: UIViewController {
    private let scrollView: UIScrollView = {
        let view = UIScrollView()
        view.translatesAutoresizingMaskIntoConstraints = false
        return view
    }()
    
    private let scrollStackViewContainer: UIStackView = {
        let view = UIStackView()
        view.axis = .vertical
        view.spacing = 10
        view.translatesAutoresizingMaskIntoConstraints = false
        view.layoutMargins = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16)
        view.isLayoutMarginsRelativeArrangement = true
        return view
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemBackground
        navigationController?.navigationBar.tintColor = .label
        view.addSubview(scrollView)
        scrollView.addSubview(scrollStackViewContainer)
        scrollStackViewContainer.addArrangedSubview(gifImageView)
        scrollStackViewContainer.addArrangedSubview(idLabel)
        scrollStackViewContainer.addArrangedSubview(titleLabel)
        scrollStackViewContainer.addArrangedSubview(publishDateLabel)
        scrollStackViewContainer.addArrangedSubview(spacerView)
        scrollStackViewContainer.addArrangedSubview(addToFavoriteButton)
        applyConstraints()
    }
    private func applyConstraints() {
        let scrollViewConstraits = [
            scrollView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
            scrollView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
            scrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
            scrollView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
        ]
        let scrollStackViewContainerConstraints = [
            scrollStackViewContainer.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
            scrollStackViewContainer.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
            scrollStackViewContainer.topAnchor.constraint(equalTo: scrollView.topAnchor),
            scrollStackViewContainer.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
            scrollStackViewContainer.widthAnchor.constraint(equalTo: scrollView.widthAnchor),
        ]
        NSLayoutConstraint.activate(scrollViewConstraits)
        NSLayoutConstraint.activate(scrollStackViewContainerConstraints)
    }
}

What should I do to display all UI element initially from the top of scroll view. Like this:

Upvotes: 0

Views: 73

Answers (0)

Related Questions