user6914372
user6914372

Reputation:

UIScrollView not able to scroll?

I have this UIScrollView set up with a UIImageView and a UILabel. However, it's not scrolling like I want it to. It's like it's not even there... How can I fix this? I just want it to be scrollable (even though theres nothing at the bottom to scroll to yet)

Thx in advance!

Here's my code:

    // scrollView
    scrollView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(scrollView)

    // scrollView constraints
    scrollView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
    scrollView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
    scrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true

    // Initialize profileImageView
    profileImageView.image = #imageLiteral(resourceName: "neil")
    profileImageView.translatesAutoresizingMaskIntoConstraints = false
    profileImageView.layer.cornerRadius = 125 / 2
    profileImageView.clipsToBounds = true
    scrollView.addSubview(profileImageView)

    // Add profileImageView constraints
    profileImageView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 45).isActive = true
    profileImageView.heightAnchor.constraint(equalToConstant: 125).isActive = true
    profileImageView.widthAnchor.constraint(equalToConstant: 125).isActive = true
    profileImageView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

    // Add separator view
    seperator.translatesAutoresizingMaskIntoConstraints = false
    seperator.backgroundColor = UIColor.darkGray
    scrollView.addSubview(seperator)

    // seperator constraints
    seperator.heightAnchor.constraint(equalToConstant: 2).isActive = true
    seperator.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.8).isActive = true
    seperator.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    seperator.topAnchor.constraint(equalTo: profileImageView.bottomAnchor, constant: 20).isActive = true

    //nameLabel
    let nameLabelFont = UIFont.monospacedDigitSystemFont(ofSize: 36, weight: UIFont.Weight.heavy)
    nameLabel.font = nameLabelFont
    nameLabel.text = currentUser.name
    nameLabel.translatesAutoresizingMaskIntoConstraints = false
    scrollView.addSubview(nameLabel)

    // nameLabel constraints
    nameLabel.topAnchor.constraint(equalTo: seperator.bottomAnchor, constant: 10).isActive = true
    nameLabel.leadingAnchor.constraint(equalTo: seperator.leadingAnchor).isActive = true

Upvotes: 0

Views: 557

Answers (1)

Mateusz
Mateusz

Reputation: 718

You can't scroll because scrollView.contentSize isn't bigger then your view.

If you want make your screen scrollable you should set scrollView.contentSize.

Put scrollView.contentSize = CGSize(width: 1000, height: 1000) before view.addSubview(scrollView) to set your scrollable area to 1000x1000.

Generally scrollView.contentSize should be calculated base on UI elements inside UIScrollView e.g. size of 10 images with space between them.

Upvotes: 1

Related Questions