2017-05-29 4 views
0

J'ai une barre de navigation ajoutée programatically à la vue avec VFL (langage de format visuel)VFL avec mise en page Taille-classe spécifique dynamique avec le soutien d'orientation

comme celui-ci

navBar.translatesAutoresizingMaskIntoConstraints = false 
self.view.addSubview(navBar) 
let views = ["bar": navBar] 
var constraints = [NSLayoutConstraint]() 
    constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|[bar]|", options: [], metrics: nil, views:views) 
    constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|[bar(64)]", options: [], metrics: nil, views:views) 
NSLayoutConstraint.activate(constraints) 

le code ci-dessus fonctionne très bien mais donne une hauteur constante à la barre de navigation comme 64. mais je voudrais l'avoir en fonction de l'orientation du mobile, portrait-64 et paysage-44

Répondre

0

Si vous voulez changer la hauteur en fonction orientati sur le changement, vous devez saisir quand changement d'orientation

La méthode ci-dessous vous aidera à faire cela.Pour modifier votre disposition en fonction de l'orientation de cette méthode aussi.

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
     if UIDevice.currentDevice().orientation.isLandscape.boolValue { 
      print("Landscape") 
      //Change your code here for landscape 
     } else { 
      print("Portrait") 
      //Change your code here for portrait 
     } 
    } 

Swift 3 Version:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
     super.viewWillTransition(to: size, with: coordinator) 

    }