2017-07-15 71 views
0

編輯:添加快照。居中對齊UIView在另一個不工作 - 編程方式 -

我有一個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

回答

0

您的視圖層次結構如下所示:

CreateNewUserVC的觀點
----- subVu

的CreateNewUserView不參與可言,你永遠不會把它添加到視圖控制器的看法。

因此,移動其框架並不會更改屏幕上任何視圖的佈局。

+0

但是,如果是這樣的話,爲什麼它運行時,我運行的功能?然而,它不能使用.center屬性的訪問..?如果這個觀點不涉及,爲什麼它受到一種方法的影響,而不是另一種?你能否詳細說明..?謝謝。 –

+1

該功能改變顯示的「subVu」的框架。另一行更改不在屏幕上的'instanceOfCreateNewUserView'的框架 –

+0

謝謝。這糾正了我的方法。我應該改變使用調用函數返回一個UIView,而不是一個類的實例。欣賞提示。 –

相關問題