繁体   English   中英

线程 1:将子视图添加到主视图时 AppDelegate 中的信号 SIGABRT 错误

[英]Thread 1: signal SIGABRT error in AppDelegate when add subView to main view

向主视图添加一些视图(即 UIView、UITextView、UIImageView 等)时应用程序崩溃

import UIKit

class ViewController: UIViewController {

    let textview: UITextView = {
        let textview2 = UITextView()
        textview2.text = "Hello World"
        textview2.font = UIFont.boldSystemFont(ofSize: 18)
        textview2.textAlignment = .center
        return textview2
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        textview.translatesAutoresizingMaskIntoConstraints = false
        textview.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        textview.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

        view.addSubview(textview)
    }


}

如何以编程方式创建视图?

编辑:我忘了在设置约束之前添加视图。 所以添加子视图后需要设置约束。

您必须像这样在 view.addSubview 之后设置约束:

import UIKit

class ViewController: UIViewController {

    let textview: UITextView = {
        let textview2 = UITextView()
        textview2.text = "Hello World"
        textview2.font = UIFont.boldSystemFont(ofSize: 18)
        textview2.textAlignment = .center
        return textview2
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(textview)
        textview.translatesAutoresizingMaskIntoConstraints = false
        textview.heightAnchor.constraint(equalToConstant: 100).isActive = true
        textview.widthAnchor.constraint(equalToConstant: 200).isActive = true
        textview.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        textview.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    }

}

首先你需要添加view.addSubview(textview)然后添加约束。

import UIKit

class testViewController: UIViewController {
    let textview: UITextView = {
        let textview2 = UITextView()
        textview2.text = "Hello World"
        textview2.font = UIFont.boldSystemFont(ofSize: 18)
       textview2.textAlignment = .center
        return textview2
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(textview)
        textview.translatesAutoresizingMaskIntoConstraints = false
        textview.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        textview.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

      // you need to specify height and width constraints as well otherwise UITextView will not appear
       textview.widthAnchor.constraint(equalToConstant: 100).isActive = true
       textview.heightAnchor.constraint(equalToConstant: 30).isActive = true
            }
        }

您需要在添加约束之前先添加子视图view.addSubview(textview)并为 textview 设置高度和宽度,因为您可以看到更新的代码:

import UIKit

class ViewController: UIViewController {

    let textview: UITextView = {
        let textview2 = UITextView()
        textview2.text = "Hello World"
        textview2.font = UIFont.boldSystemFont(ofSize: 18)
        textview2.textAlignment = .center
        return textview2
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(textview)

        textview.translatesAutoresizingMaskIntoConstraints = false
        textview.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        textview.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
        textview.widthAnchor.constraint(equalToConstant: 150).isActive = true
        textview.heightAnchor.constraint(equalToConstant: 80).isActive = true


    }


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM