[英]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.