1

J'ai créé un fichier xib pour le contrôleur de navigation personnalisé, dans ce fichier xib j'ai 3 UIButtons et 1 UILabel. Lors de l'exécution, je vais attribuer ce fichier xib comme contrôleur de navigation. J'ai besoin de définir une contrainte en utilisant VFL (Visual Format Language) dans ViewController. Je dois définir une contrainte pour backBtn, naviTitle, bell, order. i Définir une contrainte comme celui-ciComment définir une contrainte en utilisant Visual Formate Language pour le fichier xib

let views = ["backBtn": backBtn, 
       "naviTitle": naviTitle, 
       "order": order] as [String : AnyObject] 

    let iconVerticalConstraints = NSLayoutConstraint.constraints(
     withVisualFormat: "V:|-20-[backBtn(60)]", 
     options: [], 
     metrics: nil, 
     views: views) 
    allConstraints += iconVerticalConstraints 



    let nameLabelVerticalConstraints = NSLayoutConstraint.constraints(
     withVisualFormat: "V:|-23-[naviTitle]", 
     options: [], 
     metrics: nil, 
     views: views) 
    allConstraints += nameLabelVerticalConstraints 



    let skipButtonVerticalConstraints = NSLayoutConstraint.constraints(
     withVisualFormat: "V:|-20-[order]", 
     options: [], 
     metrics: nil, 
     views: views) 
    allConstraints += skipButtonVerticalConstraints 



    let welcomeHorizontalConstraints = NSLayoutConstraint.constraints(
     withVisualFormat: "H:|[backBtn]-5-[naviTitle]-5-[order]|", 
     options: [], 
     metrics: nil, 
     views: views) 
    allConstraints += welcomeHorizontalConstraints 


    let topRowHorizontalConstraints = NSLayoutConstraint.constraints(
     withVisualFormat: "H:|-15-[backBtn(60)]-[naviTitle]-[order]-15-|", 
     options: [.alignAllCenterY], 
     metrics: nil, 
     views: views) 
    allConstraints += topRowHorizontalConstraints 


    NSLayoutConstraint.activate(allConstraints) 

Mais ça ne marchera pas

Répondre

0

Au début, je suppose que vous devez désactiver Autoresizing masque

backBtn.translatesAutoresizingMaskIntoConstraints = false 
naviTitle.translatesAutoresizingMaskIntoConstraints = false 
bell.translatesAutoresizingMaskIntoConstraints = false 
order.translatesAutoresizingMaskIntoConstraints = false 

Ensuite, réparer vos contraintes que ceux qui ne peuvent être satisfaits en même temps

"H:|[backBtn]-5-[naviTitle]-5-[order]|" 
"H:|-15-[backBtn(60)]-[naviTitle]-[order]-15-|" 

Votre distance backBtn de superview ne peut pas être 0 et 15 en même temps , même pour le reste de ces contraintes.