私は私のコードでプログラムこれらの制約を追加したい制約を複製することができません:は、プログラム
self.view.bringSubview(toFront: sceneView)
sceneView.bottomAnchor.constraint(equalTo: canvasUnderReference.topAnchor, constant: 0).isActive = true
sceneView.topAnchor.constraint(equalTo: playersScoreReference.bottomAnchor, constant: 0).isActive = true
sceneView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
sceneView.widthAnchor.constraint(equalToConstant: view.frame.width).isActive = true
print(sceneView.frame)
これはアウト出力します:
(0.0, 0.0, 0.0, 0.0)
を
これまでのところ、私はこれを得ました
なぜこれらの値が出力されますか?制約は追加されていませんか?
は私がのviewDidLoadでそれを試してみましたが、このFUNC:
override func viewDidLayoutSubviews() {
sceneView.backgroundColor = UIColor.clear
sceneView.ignoresSiblingOrder = true
self.view.addSubview(sceneView)
sceneScene = SKScene(fileNamed: "MyScene")!
sceneScene.backgroundColor = .white
sceneScene.scaleMode = .resizeFill
sceneView.showsNodeCount = true
let canvasUnderReference = CanvasUnder.layoutMarginsGuide
let playersScoreReference = playersScore.layoutMarginsGuide
sceneView.bottomAnchor.constraint(equalTo: canvasUnderReference.topAnchor, constant: 0).isActive = true
sceneView.topAnchor.constraint(equalTo: playersScoreReference.bottomAnchor, constant: 0).isActive = true
sceneView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
sceneView.widthAnchor.constraint(equalToConstant: view.frame.width).isActive = true
print(sceneView.frame)
sceneView.presentScene(sceneScene)
self.view.bringSubview(toFront: CanvasCards)
self.view.bringSubview(toFront: sceneView)
}
編集2:それはまだ0出力し
override func viewDidLoad()
{
super.viewDidLoad()
sceneView.backgroundColor = UIColor.clear
sceneView.ignoresSiblingOrder = true
self.view.addSubview(sceneView)
sceneScene = SKScene(fileNamed: "MyScene")!
sceneScene.backgroundColor = .white
sceneScene.scaleMode = .resizeFill
sceneView.showsNodeCount = true
let canvasUnderReference = CanvasUnder.layoutMarginsGuide
let playersScoreReference = playersScore.layoutMarginsGuide
sceneView.bottomAnchor.constraint(equalTo: canvasUnderReference.topAnchor, constant: 0).isActive = true
sceneView.topAnchor.constraint(equalTo: playersScoreReference.bottomAnchor, constant: 0).isActive = true
sceneView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
sceneView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
sceneView.presentScene(sceneScene)
self.view.bringSubview(toFront: CanvasCards)
self.view.bringSubview(toFront: sceneView)
}
、0、0、0
どこに制約を追加しましたか?どのような方法で、ビューライフサイクルのどの時点でですか? – Fahim
* viewDidLoad *ではなく* viewWillLayoutSubviews *または* viewDidLayoutSUbview *を試してみてください。 – dfd
私はviewDidLoad、viewWillLayoutSubvies、viewDidLayoutSubviewsでそれを持っていましたが、すべて動作せず、すべてが0,0,0,0を返しました –