我有一个奇怪的问题,我试图以编程方式只显示文本字段、按钮,但在我的视图中什么都没有显示。我已经调试并设置了断点,奇怪的是,我得到的所有点都在执行,但仍然没有任何东西在我的设备上呈现。
在AppDelegate中:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
let loginVC = LoginViewController()
let navController = UINavigationController(rootViewController: loginVC)
window!.rootViewController = navController
window!.makeKeyAndVisible()
return true
}
在LoginViewController中:
import UIKit
class LoginViewController: UIViewController {
let footerView: UIView = {
let view = UIView()
view.backgroundColor = UIColor.mainGreen()
return view
}()
let emailTextField: UITextField = {
let tf = UITextField()
tf.attributedPlaceholder = NSAttributedString(string: "Email", attributes: [NSAttributedStringKey.foregroundColor: UIColor.mainWhite()])
tf.textAlignment = .center
tf.textAlignment = .center
tf.textColor = .white
tf.backgroundColor = UIColor.mainGreen()
tf.borderStyle = .roundedRect
tf.font = UIFont.systemFont(ofSize: 14)
return tf
}()
let passwordTextField: UITextField = {
let tf = UITextField()
tf.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSAttributedStringKey.foregroundColor: UIColor.mainWhite()])
tf.textAlignment = .center
tf.textColor = .white
tf.isSecureTextEntry = true
tf.backgroundColor = UIColor.mainGreen()
tf.borderStyle = .roundedRect
tf.font = UIFont.systemFont(ofSize: 14)
return tf
}()
let loginButton: UIButton = {
let button = UIButton(type: .system)
button.setTitle("Login", for: .normal)
button.setTitleColor(UIColor.mainGreen(), for: .normal)
button.backgroundColor = UIColor.mainWhite()
button.layer.cornerRadius = 5
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
button.isEnabled = true
return button
}()
let dontHaveAccountButton: UIButton = {
let button = UIButton(type: .system)
let attributedTitle = NSMutableAttributedString(string: "Don't have an account? ", attributes: [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 14), NSAttributedStringKey.foregroundColor: UIColor.mainGreen()])
attributedTitle.append(NSAttributedString(string: "Get Started", attributes: [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 14),
NSAttributedStringKey.foregroundColor: UIColor.mainGreen()]))
button.setAttributedTitle(attributedTitle, for: .normal)
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.mainWhite()
view.addSubview(footerView)
footerView.anchor(top: nil, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 60)
let stackView = UIStackView(arrangedSubviews: [emailTextField, passwordTextField, loginButton])
stackView.axis = .vertical
stackView.spacing = 10
stackView.distribution = .fillEqually
view.addSubview(stackView)
stackView.anchor(top: view.safeAreaLayoutGuide.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 40, paddingLeft: 40, paddingBottom: 0, paddingRight: 40, width: 0, height: 140)
view.addSubview(dontHaveAccountButton)
dontHaveAccountButton.anchor(top: stackView.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 12, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 50)
}
override func viewWillAppear(_ animated: Bool) {
navigationController?.isNavigationBarHidden = true
}
}
奇怪的是,页脚视图出现了,但按钮、文本字段或其他任何内容都没有出现。
有没有人见过这样的东西?我是不是漏掉了什么明显的东西?
发布于 2018-08-14 06:19:50
可能是因为您在此处将栈顶约束设置为视图的底部
stackView.anchor(top: view.safeAreaLayoutGuide.bottomAnchor
做
stackView.anchor(top: view.safeAreaLayoutGuide.topAnchor
https://stackoverflow.com/questions/51831305
复制相似问题