J'essaie de supprimer les contraintes. Je veux des contraintes différentes sur le portrait et le paysage. Si je change l'orientation en Portrait, j'appelle la fonction setupConstrainsInPortrait et inversement. J'ai deux fonctions.Supprimer les contraintes iOS
Cette fonction permet de configurer le mode Portrait.
func setupConstrainsInPortrait() {
view.addSubview(myView)
myView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
myView.topAnchor.constraint(equalTo: view.topAnchor, constant: 50).isActive = true
myView.heightAnchor.constraint(equalToConstant: 300).isActive = true
myView.widthAnchor.constraint(equalToConstant: view.frame.size.width).isActive = true
view.addSubview(switchKmM)
switchKmM.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
switchKmM.topAnchor.constraint(equalTo: myView.bottomAnchor, constant: 10).isActive = true
switchKmM.heightAnchor.constraint(equalToConstant: 50).isActive = true
switchKmM.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
view.addSubview(speedLbl)
speedLbl.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
speedLbl.topAnchor.constraint(equalTo: view.bottomAnchor, constant: -50).isActive = true
speedLbl.heightAnchor.constraint(equalToConstant: 50).isActive = true
speedLbl.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
}
Cette fonction permet de configurer le mode paysage.
func setupConstrainsInLandScape() {
view.addSubview(myView)
myView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 10).isActive = true
myView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
myView.heightAnchor.constraint(equalToConstant: 300).isActive = true
myView.widthAnchor.constraint(equalToConstant: 150).isActive = true
view.addSubview(switchKmM)
switchKmM.leftAnchor.constraint(equalTo: myView.rightAnchor, constant: 30).isActive = true
switchKmM.topAnchor.constraint(equalTo: view.topAnchor, constant: 30).isActive = true
switchKmM.heightAnchor.constraint(equalToConstant: 50).isActive = true
switchKmM.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
}
-je utiliser ces fonctions dans viewWillTransition
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.current.orientation.isLandscape {
print("landscape!")
view.backgroundColor = .green
setupConstrainsInLandScape()
self.viewWillLayoutSubviews()
}
else {
print("portrét")
view.backgroundColor = .white
setupConstrainsInPortrait()
self.viewWillLayoutSubviews()
}
super.viewWillTransition(to: size, with: coordinator)
}
Le problème est que les contraintes (de la fonction portrait) en mode paysage ne sont pas supprimés
J'espère que quelqu'un peut me aider. .. Merci
Quelle est la question/le problème? Donnez les résultats souhaités par rapport aux résultats réels. – matt
Le problème est, que les contraintes (de la fonction portrait) en mode paysage ne sont pas supprimées –
"les contraintes (de la fonction portrait) en mode paysage ne sont pas supprimées" Pas de surprise là-bas. Je ne vois aucun code qui les supprimerait. Tout ce que vous faites est de dire 'isActive = true'. Jamais une fois vous ne dites 'isActive = false'. Donc, vous continuez à ajouter et à ajouter des contraintes sans jamais en supprimer. Qu'attendez-vous, dans ce cas? – matt