在另一个中心对齐UIView不能正常工作 - 程序设计 -

时间:2017-07-15 07:23:48

标签: 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 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的新手,并试图找出如何以编程方式构建/对齐控件元素。enter image description here

1 个答案:

答案 0 :(得分:0)

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

CreateNewUserVC的视图
----- subVu

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

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