EDIT:スナップショットを追加しました。異なる.swiftファイル内別の内部の中央揃えUIViewが機能していません-programmatically-
次のように私は、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
}
、私は次の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
}
}
そうでない理由はあります2番目のケースで作業していますか?
instanceOfCreateNewUserView.center.y = view.center.y
また、以下は動作しません。..
instanceOfCreateNewUserView.center.y = self.view.center.y
アプリのビルドと実行される、しかし、ビューは水平に並んではなく縦にしています。
私は、コントロール要素をプログラム的に作成/整列する方法を知りたいと思っています。
しかし、その場合、なぜ私は関数を実行すると動作するのですか?それでも、.centerプロパティへのアクセスを使用して動作しません..?ビューが関与していない場合、1つのアプローチではなぜ影響を受けますが、他のアプローチでは影響を受けません。 ..あなたは詳しく説明できますか?ありがとう。 –
この関数は表示される 'subVu'のフレームを変更します。もう1行は 'instanceOfCreateNewUserView'のフレームを変更します。これは画面に表示されません –
ありがとうございます。これは私のアプローチを修正しました。私は、クラスのインスタンスではなく、UIViewを返す関数への呼び出しを使用して変更する必要があります。ヒントを気に入ってください。 –