Ios 在另一个视图中居中对齐UIView不起作用-编程方式-

Ios 在另一个视图中居中对齐UIView不起作用-编程方式-,ios,layout,uiview,swift3,programmatically-created,Ios,Layout,Uiview,Swift3,Programmatically Created,编辑:添加了一个快照 我有一个UIView类,如下所示 class CreateNewUserView: UIView{ private let subVu: UIView! = UIView() func createNewUserVuLayout() -> UIView{ subVu.frame.size = CGSize(width:320, height:320) // adding programmatically-created but

编辑:添加了一个快照

我有一个UIView类,如下所示

class CreateNewUserView: UIView{

private let subVu: UIView! = UIView()

    func createNewUserVuLayout() -> UIView{
        subVu.frame.size =  CGSize(width:320, height:320)

    //  adding programmatically-created buttons, labels, textfields, etc..

        return subVu

    }

// will call the function below in a different ViewController class

func centerTheVu(superVuX:CGFloat){ 

        subVu.center.x = superVuX
    }
在另一个.swift文件中,我有以下UIViewController类

import UIKit

class CreateNewUserVC: UIViewController{

private let instanceOfCreateNewUserView = CreateNewUserView()


    override func loadView(){

        super.loadView()

        view.addSubview(instanceOfCreateNewUserView.createNewUserVuLayout())

// Calling the function from the UIView class now. Working perfectly!
// the view is centered horizontally as expected.        

instanceOfCreateNewUserView.centerTheVu(superVuX: view.center.x)

// However, if I delete the above line, the line below does not accomplish 
// the same task when I try to do the same vertically! 

        instanceOfCreateNewUserView.center.y = view.center.y


    }


}
第二种情况下它不起作用有什么原因吗

instanceOfCreateNewUserView.center.y=view.center.y

此外,以下内容也不起作用

instanceOfCreateNewUserView.center.y=self.view.center.y

然而,应用程序构建和运行时,视图是水平对齐的,而不是垂直对齐的


我是swift新手,正在尝试找出如何以编程方式构建/对齐控件元素。

您的视图层次结构如下所示:

CreateNewUserVC的视图
-----苏布武

根本不涉及CreateNewUserView,您从未将其添加到视图控制器的视图中


因此,移动其框架不会改变屏幕上任何视图的布局。

您的视图层次结构如下所示:

CreateNewUserVC的视图
-----苏布武

根本不涉及CreateNewUserView,您从未将其添加到视图控制器的视图中


因此,移动其框架不会改变屏幕上任何视图的布局。

但如果是这样,为什么在我运行该功能时它会工作??但是,使用对.center属性的访问权限时,它不起作用。。?如果视图不涉及,为什么一种方法会影响视图,而另一种方法不会影响视图。。?你能详细说明一下吗。。?谢谢。该功能更改显示的
subVu
的帧。另一行更改了
instanceOfCreateNewUserView
的框架,该框架不在屏幕上。谢谢。这纠正了我的做法。我应该通过调用返回UIView而不是类实例的函数来改变。谢谢你的提示。但是如果是这样的话,为什么在我运行函数的时候它会工作??但是,使用对.center属性的访问权限时,它不起作用。。?如果视图不涉及,为什么一种方法会影响视图,而另一种方法不会影响视图。。?你能详细说明一下吗。。?谢谢。该功能更改显示的
subVu
的帧。另一行更改了
instanceOfCreateNewUserView
的框架,该框架不在屏幕上。谢谢。这纠正了我的做法。我应该通过调用返回UIView而不是类实例的函数来改变。感谢你的暗示。