简体   繁体   English

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

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

App crash when add some views (ie UIView, UITextView, UIImageView, ...) 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)
    }


}

How to create views by programmatically?如何以编程方式创建视图?

Edit: I forgot to add the view before setting constraints.编辑:我忘了在设置约束之前添加视图。 So you need to set constraints after adding subviews.所以添加子视图后需要设置约束。

You must set constraints after view.addSubview like this :您必须像这样在 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
    }

}

First you need to add view.addSubview(textview) then add constraints.首先你需要添加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
            }
        }

You need to add subview first view.addSubview(textview) before adding constraints and set height and width also for textview as you can see updated code:您需要在添加约束之前先添加子视图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