0.3 C
New York
Sunday, February 23, 2025

ios – Components not centered on the web page


I’ve the next code

    let scrollView = UIScrollView()
    scrollView.translatesAutoresizingMaskIntoConstraints = false
    scrollView.showsHorizontalScrollIndicator = false
    scrollView.showsVerticalScrollIndicator = false
    view.addSubview(scrollView)
    
    NSLayoutConstraint.activate([
        scrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
        scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
    ])
    
    let contentView = UIView()
    contentView.translatesAutoresizingMaskIntoConstraints = false
    scrollView.addSubview(contentView)
    
    contentView.backgroundColor = UIColor(pink: 0.97, inexperienced: 0.98, blue: 0.99, alpha: 1.00)
    
    NSLayoutConstraint.activate([
        contentView.topAnchor.constraint(equalTo: scrollView.topAnchor),
        contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
        contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
        contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor)
    ])
    
    // Giant Label
    let largeLabel: UILabel = {
        let label = UILabel()
        label.textual content = "Congrats!"
        label.font = UIFont(identify: "Inter-Daring", dimension: 24)
        label.textAlignment = .middle
        label.numberOfLines = 0
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()
    
    // Small Label
    let smallLabel: UILabel = {
        let label = UILabel()
        label.textual content = "Your completed the (class.identify) lesson."
        label.font = UIFont(identify: "Inter-Common", dimension: 16)
        label.textColor = .black
        label.textAlignment = .middle
        label.numberOfLines = 0
        label.lineBreakMode = .byWordWrapping
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()
    
    
    // Picture View
    let animatedImageView: UIImageView = {
        let imageView = UIImageView(picture: UIImage(named: "hearth"))
        imageView.tintColor = .systemYellow
        imageView.contentMode = .scaleAspectFit
        imageView.translatesAutoresizingMaskIntoConstraints = false
        return imageView
    }()
    
    
    contentView.addSubview(largeLabel)
    contentView.addSubview(smallLabel)
    contentView.addSubview(animatedImageView)
    
    
    let totalScore = rating + WUser.sharedInstance.getUserScore()
    var nextLevel = ""
    var currentLevel = ""
    var toXP = 0
    
    let pointsView = UIView()
    pointsView.layer.cornerRadius = 20
    pointsView.backgroundColor = .white
    pointsView.layer.borderColor = UIColor.grey.cgColor
    pointsView.layer.borderWidth = 1
    pointsView.layer.masksToBounds = true
    pointsView.translatesAutoresizingMaskIntoConstraints = false
    contentView.addSubview(pointsView)
    
    let pointsLabel: UILabel = {
        let label = UILabel()
        label.textual content = "Factors Earned"
        label.font = UIFont(identify: "Inter-Daring", dimension: 16)
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()
    
    let percentageLabel: UILabel = {
        let label = UILabel()
        label.textual content = "+(rating + 5)"
        label.font = UIFont(identify: "Inter-Daring", dimension: 16)
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()
    
    let iconImageView: UIImageView = {
        let imageView = UIImageView()
        imageView.contentMode = .scaleAspectFit
        imageView.picture = UIImage(systemName: "star.fill")
        imageView.tintColor = UIColor(pink: 0.63, inexperienced: 0.14, blue: 0.92, alpha: 1.00)
        imageView.translatesAutoresizingMaskIntoConstraints = false
        return imageView
    }()
       
    let progressView = UIProgressView(progressViewStyle: .default)
    progressView.progress = 0
    progressView.layer.cornerRadius = 10
    progressView.layer.masksToBounds = true
    progressView.trackTintColor = UIColor(pink: 0.91, inexperienced: 0.91, blue: 0.91, alpha: 1.00)
    progressView.progressTintColor = UIColor(pink: 0.63, inexperienced: 0.14, blue: 0.92, alpha: 1.00)
    progressView.translatesAutoresizingMaskIntoConstraints = false

    
    if totalScore < 5 {
        currentLevel = "Degree 1"
        nextLevel = "Starter"
        toXP = 5 - totalScore
    } else if totalScore < 50 {
        currentLevel = "Starter"
        nextLevel = "Trailblazer"
        toXP = 50 - totalScore
    } else if totalScore < 100 {
        currentLevel = "Trailblazer"
        nextLevel = "Champ"
        toXP = 100 - totalScore
    } else if totalScore < 200 {
        currentLevel = "Champ"
        nextLevel = "Genius"
        toXP = 200 - totalScore
    } else if totalScore < 500 {
        currentLevel = "Champ"
        nextLevel = "Genius"
        toXP = 500 - totalScore
    } else {
        currentLevel = "Genius"
        nextLevel = "Genius"
    }
    
    
    let xpLabel: UILabel = {
        let label = UILabel()
        label.textual content = "(toXP) XP to (nextLevel)"
        label.font = UIFont(identify: "Inter-Common", dimension: 14)
        label.translatesAutoresizingMaskIntoConstraints = false
        return label
    }()
    
    pointsView.addSubview(pointsLabel)
    pointsView.addSubview(percentageLabel)
    pointsView.addSubview(iconImageView)
    contentView.addSubview(progressView)
    contentView.addSubview(xpLabel)
    
    NSLayoutConstraint.activate([
        largeLabel.topAnchor.constraint(equalTo: contentView.safeAreaLayoutGuide.topAnchor, constant: 20),
        largeLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 20),
        largeLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20),
        
        // Small Label Constraints
        smallLabel.topAnchor.constraint(equalTo: largeLabel.bottomAnchor, constant: 20),
        smallLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 20),
        smallLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20),
        
        animatedImageView.topAnchor.constraint(equalTo: smallLabel.bottomAnchor, constant: 40),
        animatedImageView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        animatedImageView.widthAnchor.constraint(equalToConstant: 150),
        animatedImageView.heightAnchor.constraint(equalToConstant: 150),
            
        pointsView.topAnchor.constraint(equalTo: animatedImageView.bottomAnchor, constant: 50),
        pointsView.widthAnchor.constraint(equalToConstant: 300),
        pointsView.heightAnchor.constraint(equalToConstant: 50),
        pointsView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        
        pointsLabel.leadingAnchor.constraint(equalTo: pointsView.leadingAnchor, constant: 16),
        pointsLabel.centerYAnchor.constraint(equalTo: pointsView.centerYAnchor),
        
        percentageLabel.trailingAnchor.constraint(equalTo: iconImageView.leadingAnchor, constant: -8),
        percentageLabel.centerYAnchor.constraint(equalTo: pointsView.centerYAnchor),
        
        iconImageView.trailingAnchor.constraint(equalTo: pointsView.trailingAnchor, constant: -16),
        iconImageView.centerYAnchor.constraint(equalTo: pointsView.centerYAnchor),
        iconImageView.widthAnchor.constraint(equalToConstant: 24),
        iconImageView.heightAnchor.constraint(equalToConstant: 24),
        
        
        progressView.leadingAnchor.constraint(equalTo: pointsView.leadingAnchor, constant: 16),
        progressView.trailingAnchor.constraint(equalTo: pointsView.trailingAnchor, constant: -16),
        progressView.topAnchor.constraint(equalTo: pointsView.bottomAnchor, constant: 30),
        progressView.heightAnchor.constraint(equalToConstant: 20),
        
        xpLabel.leadingAnchor.constraint(equalTo: progressView.leadingAnchor),
        xpLabel.topAnchor.constraint(equalTo: progressView.bottomAnchor, constant: 10)
    ])
    
    
    let instructionLabel = UILabel()
    instructionLabel.textual content = "How would you fee the lesson?"
    instructionLabel.textAlignment = .middle
    instructionLabel.font = UIFont(identify: "Inter-Daring", dimension: 18)
    instructionLabel.translatesAutoresizingMaskIntoConstraints = false
    
    let starsStackView = UIStackView()
    starsStackView.axis = .horizontal
    starsStackView.alignment = .middle
    starsStackView.distribution = .equalSpacing
    starsStackView.spacing = 10
    starsStackView.translatesAutoresizingMaskIntoConstraints = false
    
    for i in 1...5 {
        let button = UIButton(sort: .system)
        button.tag = i
        button.setTitle("★", for: .regular)
        button.titleLabel?.font = UIFont.systemFont(ofSize: 30)
        button.setTitleColor(.lightGray, for: .regular)
        button.addTarget(self, motion: #selector(starTapped(_:)), for: .touchUpInside)
        starsStackView.addArrangedSubview(button)
    }
    
    let submitButton = UIButton(sort: .system)
    submitButton.setTitle("Submit Score", for: .regular)
    submitButton.backgroundColor = UIColor(pink: 0.35, inexperienced: 0.25, blue: 0.55, alpha: 1.00)
    submitButton.setTitleColor(.white, for: .regular)
    submitButton.layer.cornerRadius = 20
    submitButton.titleLabel?.font = UIFont(identify: "Inter-Daring", dimension: 16)
    submitButton.addTarget(self, motion: #selector(submitRating), for: .touchUpInside)
    submitButton.translatesAutoresizingMaskIntoConstraints = false
    
    
    let closeButton = UIButton(sort: .system)
    closeButton.setTitle("Shut", for: .regular)
    closeButton.setTitleColor(.grey, for: .regular)
    closeButton.titleLabel?.font = UIFont(identify: "Inter-Daring", dimension: 16)
    closeButton.addTarget(self, motion: #selector(goBack), for: .touchUpInside)
    closeButton.translatesAutoresizingMaskIntoConstraints = false
    
    contentView.addSubview(instructionLabel)
    contentView.addSubview(starsStackView)
    contentView.addSubview(submitButton)
    contentView.addSubview(closeButton)
    
    NSLayoutConstraint.activate([
        instructionLabel.topAnchor.constraint(equalTo: xpLabel.bottomAnchor, constant: 30),
        instructionLabel.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        
        starsStackView.topAnchor.constraint(equalTo: instructionLabel.bottomAnchor, constant: 20),
        starsStackView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        
        submitButton.topAnchor.constraint(equalTo: starsStackView.bottomAnchor, constant: 20),
        submitButton.widthAnchor.constraint(equalToConstant: 250),
        submitButton.heightAnchor.constraint(equalToConstant: 50),
        submitButton.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        
        
        closeButton.topAnchor.constraint(equalTo: submitButton.bottomAnchor, constant: 20),
        closeButton.widthAnchor.constraint(equalToConstant: 250),
        closeButton.heightAnchor.constraint(equalToConstant: 50),
        closeButton.centerXAnchor.constraint(equalTo: contentView.centerXAnchor),
        closeButton.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -20.0)
    ])
    
    
    DispatchQueue.most important.asyncAfter(deadline: .now() + 0.5) {
        UIView.animate(withDuration: 1.5) {
            progressView.setProgress(Float(Float(totalScore)/500), animated: true)
        }
    }
    
    UIView.animate(withDuration: 1.0,
                   delay: 0,
                   choices: [.autoreverse, .repeat],
                   animations: {
        animatedImageView.remodel = CGAffineTransform(scaleX: 1.5, y: 1.5)
    }, completion: { _ in
        animatedImageView.remodel = .id
    })

Sadly, the weather usually are not centered on the web page. They shift to the left of the display screen.

See connected

Can somebody please assist?

enter image description here

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles