Scroll View движется горизонтально, а не вертикально - PullRequest
0 голосов
/ 22 марта 2020

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

import UIKit
import SafariServices


class MainView: UIViewController {

    let transition = MainDropMenuAnimation()

    let scrollView = UIScrollView()
    let scrollViewView = UIView()
    let factView = QuickFact()
    let socialMediaSV = SocialMediaSV()
    let logo = UIImageView()
    let aboutUs = UITextView()
    let dropMenuButton = UIButton(type: .custom)

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor(patternImage: #imageLiteral(resourceName: "HomeBackground"))
        addQuickFactView()
        setupScrollView()
        setupNavBar()
    }

    func setupNavBar() {
        navigationItem.title = "Home"
        navigationController?.navigationBar.barTintColor = .clear

        dropMenuButton.setImage(#imageLiteral(resourceName: "dropMenuButton"), for: .normal)
        dropMenuButton.addTarget(self, action: #selector(handleDropMenu), for: .touchUpInside)
        dropMenuButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
        dropMenuButton.widthAnchor.constraint(equalTo: dropMenuButton.heightAnchor).isActive = true
        let leftButton = UIBarButtonItem(customView: dropMenuButton)
        self.navigationItem.leftBarButtonItem = leftButton
    }

    @objc func handleDropMenu() {

        let dropMenu = DropViewContainer()
        dropMenu.modalPresentationStyle = .overCurrentContext
        dropMenu.transitioningDelegate = self
        present(dropMenu, animated: true)
    }

    func addQuickFactView() {

        addChild(factView)
        view.addSubview(factView.view)
        factView.didMove(toParent: self)

        factView.view.translatesAutoresizingMaskIntoConstraints = false
        factView.view.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        factView.view.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        factView.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
        factView.view.heightAnchor.constraint(equalToConstant: 200).isActive = true
    }

    func setupScrollView() {
        setupView()
        scrollView.contentSize.height = 3000
        view.addSubview(scrollView)
        positionScrollView()
    }
    func positionScrollView() {
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        scrollView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        scrollView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        scrollView.topAnchor.constraint(equalTo: factView.view.bottomAnchor).isActive = true
        scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    }
    func setupView() {
        setupLogo()
        setupAboutUs()
        setupSocialMediaSV()
        scrollView.addSubview(scrollViewView)
        positionView()
    }
    func positionView() {
        scrollViewView.translatesAutoresizingMaskIntoConstraints = false
        scrollViewView.rightAnchor.constraint(equalTo: scrollView.rightAnchor).isActive = true
        scrollViewView.leftAnchor.constraint(equalTo: scrollView.leftAnchor).isActive = true
        scrollViewView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
        scrollViewView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
    }
    func setupLogo() {
        logo.image = #imageLiteral(resourceName: "Logo")
        scrollViewView.addSubview(logo)
        positionLogo()
    }
    func positionLogo() {
        logo.translatesAutoresizingMaskIntoConstraints = false
        logo.widthAnchor.constraint(equalToConstant: 200).isActive = true
        logo.heightAnchor.constraint(equalToConstant: 200).isActive = true
        logo.centerXAnchor.constraint(equalTo: scrollViewView.centerXAnchor).isActive = true
        logo.topAnchor.constraint(equalTo: scrollViewView.topAnchor, constant: 20).isActive = true
    }

    func setupAboutUs() {
        let aboutUsText = (NSMutableAttributedString(string: "About Us\n", attributes: [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 25)]))
        aboutUsText.append(NSMutableAttributedString(string: "At Cleaner Together, we are commited to promoting recycling, reusing, and reducing (and of course composting), while spreading sanitization and cleanliness around the world. At the moment, we are just encouraging proper waste disposal, however with proper funding we have many projects we hope to accomplish.", attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 17), NSAttributedString.Key.foregroundColor: UIColor.black]))

        aboutUs.attributedText = aboutUsText
        aboutUs.textColor = .black
        aboutUs.textAlignment = .left
        aboutUs.isScrollEnabled = false
        aboutUs.isEditable = false
        aboutUs.backgroundColor = .init(white: 1.0, alpha: 0.5)
        aboutUs.layer.cornerRadius = 20
        scrollViewView.addSubview(aboutUs)
        positionAboutUs()
    }
    func positionAboutUs() {
        aboutUs.translatesAutoresizingMaskIntoConstraints = false
        aboutUs.rightAnchor.constraint(equalTo: scrollViewView.rightAnchor, constant: -20).isActive = true
        aboutUs.leftAnchor.constraint(equalTo: scrollViewView.leftAnchor, constant: 20).isActive = true
        aboutUs.heightAnchor.constraint(equalToConstant: 200).isActive = true
        aboutUs.topAnchor.constraint(equalTo: logo.bottomAnchor, constant: 20).isActive = true
    }
    func setupSocialMediaSV() {
        addChild(socialMediaSV)
        scrollViewView.addSubview(socialMediaSV.view)
        socialMediaSV.didMove(toParent: self)

        socialMediaSV.view.translatesAutoresizingMaskIntoConstraints = false
        socialMediaSV.view.centerXAnchor.constraint(equalTo: scrollViewView.centerXAnchor).isActive = true
        socialMediaSV.view.widthAnchor.constraint(equalToConstant: 240).isActive = true
        socialMediaSV.view.topAnchor.constraint(equalTo: aboutUs.bottomAnchor, constant: 20).isActive = true
        socialMediaSV.view.heightAnchor.constraint(equalToConstant: 40).isActive = true
    }
}

extension MainView: UIViewControllerTransitioningDelegate {
    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        transition.isPresenting = true
        return transition
    }

    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        transition.isPresenting = false
        return transition
    }
}

1 Ответ

0 голосов
/ 22 марта 2020

Вы должны проверить свои ограничения и убедиться, что ваше представление прокрутки имеет правильный contentSize .

Сделать левый и правый якоря scrollViewView также равными представлению viewController. В шутку c positionView ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...