Вид дизайна не отображается во ViewController - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь создать UIView и установить его как ViewController's представление. Я настроил его, но он не будет отображаться правильно. например, я выбрал backgroundColor для представления, которое не отображается. Я добавил две кнопки, и они показывают, но не так, как ожидалось. Это мой UIView код:

import UIKit

public final class LoginView: UIView {
public override init(frame: CGRect) {
    super.init(frame: frame)
    self.addSubview(stackView)
    self.backgroundColor = UIColor.appColors.white

    NSLayoutConstraint.activate([
        stackView.centerXAnchor.constraint(equalTo: self.centerXAnchor),
        stackView.centerYAnchor.constraint(equalTo: self.centerYAnchor),
        stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
        stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor),
    ])
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

public let login: UIButton = {
    let button = UIButton(type: .system)
    button.titleLabel?.font = UIFont(name: "AvenirNext-Regular", size: 17.0)
    button.setTitle("Login", for: .normal)
    button.setTitleColor(UIColor.appColors.white, for: .normal)
    button.backgroundColor = UIColor.appColors.green
    button.contentHorizontalAlignment = .center
    button.layer.cornerRadius = 10
    button.layer.shadowColor = UIColor(white: 0, alpha: 0.25).cgColor
    button.layer.shadowOffset = CGSize(width: 0, height: 2)
    button.layer.shadowOpacity = 1
    button.layer.shadowRadius = 0
    button.layer.masksToBounds = false
    button.clipsToBounds = true

    return button
}()

public let signup: UIButton = {
    let button = UIButton(type: .system)
    button.titleLabel?.font = UIFont(name: "AvenirNext-Regular", size: 17.0)
    button.setTitle("Signup", for: .normal)
    button.setTitleColor(UIColor.appColors.white, for: .normal)
    button.backgroundColor = UIColor.appColors.red
    button.contentHorizontalAlignment = .center
    button.layer.cornerRadius = 10
    button.layer.shadowColor = UIColor(white: 0, alpha: 0.25).cgColor
    button.layer.shadowOffset = CGSize(width: 0, height: 2)
    button.layer.shadowOpacity = 1
    button.layer.shadowRadius = 0
    button.layer.masksToBounds = false
    button.clipsToBounds = true

    return button
}()

private lazy var stackView: UIStackView = {
    let stackView = UIStackView(arrangedSubviews: [self.login, self.signup])
    stackView.axis = .vertical
    stackView.distribution = .fillEqually
    stackView.alignment = .fill
    stackView.spacing = 10.0
    stackView.translatesAutoresizingMaskIntoConstraints = false

    return stackView
}()
}

Это мой ViewController:

import UIKit

class loginVC: UIViewController {
override func loadView() {
    super.loadView()
    self.view = LoginVC()
}
override func viewDidLoad() {
    super.viewDidLoad()
}


}

Как видите, я все настроил, изменил внешний вид кнопок и выбрал цвет фона, но он не будет отображаться на ViewController. Я хочу разделить View и ViewController, потому что мне действительно нужна гибкость с этим приложением, но оно просто не будет работать. Есть идеи? enter image description here

1 Ответ

1 голос
/ 30 мая 2019

В loadView(), оно должно быть LoginView() вместо loginVC(), то есть

class loginVC: UIViewController {
    override func loadView() {
        super.loadView()
        self.view = LoginView()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

enter image description here

Редактировать:

Попробуйте заменить UIColor.appColors просто UIColor и посмотрите, дает ли он ожидаемый результат.Это единственное, что я изменил в вашем коде, чтобы это работало идеально.

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