Ios 如何在没有故事板的情况下设置ViewController的框架

Ios 如何在没有故事板的情况下设置ViewController的框架,ios,swift,view,viewcontroller,Ios,Swift,View,Viewcontroller,我想在不使用情节提要的情况下使用ViewController创建视图(例如100x100)。我想知道声明ViewController框架的最佳方法是什么 我试过: class MyLittleViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.frame = CGRect(x: 0, y: 0, width: 10

我想在不使用情节提要的情况下使用ViewController创建视图(例如100x100)。我想知道声明ViewController框架的最佳方法是什么

我试过:

class MyLittleViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()        
        view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
    }
}
我尝试在MainViewController上查看此视图:

override func viewDidLoad() {
    super.viewDidLoad()

    let myLittleView = MyLittleViewController()
    myLittleView.willMove(toParent: self)
    myLittleView.view.translatesAutoresizingMaskIntoConstraints = false
    myLittleView.view.backgroundColor = .red
    view.addSubview(myLittleView.view)
    // enable auto-sizing (for example, if the device is rotated)
    myLittleView.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.addChild(myLittleView)
    myLittleView.didMove(toParent: self)

    myLittleView.view.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    myLittleView.view.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}

它不像我预期的那样工作,因为小视图没有出现在主视图中。有什么提示吗?

您不应该将框架布局与自动布局混合,并设置宽度和高度约束

NSLayoutConstraint.activate([
    myLittleView.view.centerXAnchor.constraint(equalTo: view.centerXAnchor),
    myLittleView.view.centerYAnchor.constraint(equalTo: view.centerYAnchor),
    myLittleView.view.heightAnchor.constraint(equalToConstant:100),
    myLittleView.view.widthAnchor.constraint(equalToConstant:100)
])

myLittleView.view.frame = CGRect(x: 0, y: 0, width: 100, height: 100) 
myLittleView.view.center = view.center
override func loadView() {
    view = UIView()
    view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
}

myLittleView.view.frame = CGRect(x: 0, y: 0, width: 100, height: 100) 
myLittleView.view.center = view.center
override func loadView() {
    view = UIView()
    view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
}

编辑:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
           self.view.backgroundColor = .green
        let myLittleView = MyLittleViewController()
        myLittleView.willMove(toParent: self)
        myLittleView.view.backgroundColor = .red
        view.addSubview(myLittleView.view)
        // enable auto-sizing (for example, if the device is rotated)
        myLittleView.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        self.addChild(myLittleView)
        myLittleView.didMove(toParent: self)
        myLittleView.view.center = view.center
    }
}

class MyLittleViewController: UIViewController {

    override func loadView() {
        view = UIView()
        view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
    }

}

设置视图控制器框架的另一种方法是重写方法loadView(),并按如下方式设置视图框架

func loadView() {
   view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
}

谢谢,有没有办法在MyLittleViewController类中设置框架?谢谢,现在它可以工作了,以前由于myLittleView.view.TranslatesAutoResizezingMaskintoConstraints=false而无法工作,但是我不知道为什么当您以编程方式设置约束时会使用
myLittleView.view.TranslatesAutoResizezingMacSkintoConstraints=false
,但是当我以编程方式设置约束时,我仍然不能使用
myLittleView.view.TranslatesAutoResizezingMacSkintoConstraints=false
,但约束有效。不幸的是,它不起作用:(,当它运行时,它会给我一个错误:线程1:EXC_BAD_ACCESS(代码=2,地址=0x16b697ee0)。@edoardocal您需要创建一个新的view@Sh_Khan我试图使用:override func loadView(){view=UIView(frame:UIScreen.main.bounds)}@Sh_Khan不,它没有:(,它不显示视图。是的,我尝试使用您的代码,但视图未显示。