1

Я создал файл xib для настраиваемого контроллера навигации, в этом файле xib у меня есть 3 UIButtons и 1 UILabel. Во время выполнения я назначу этот файл xib в качестве навигационного контроллера. Мне нужно установить ограничение, используя VFL (язык Visual Format) в ViewController.Как установить Constraint с использованием языка Visual Formate для файла xib

let tempView = Bundle.main.loadNibNamed("CustomNavigation", owner: self, options: nil)?.first as! CustomNavigationView 
    self.view.addSubview(tempView) 

    tempView.backgroundColor = UIColor.lightGray 
    //tempView.frame = CGRect(x: 0, y: 0, width:width, height: 64) 

    let backBtn = tempView.back as UIButton 
    let naviTitle = tempView.naviTitle as UILabel 
    let bell = tempView.bell as UIButton 
    let order = tempView.order as UIButton 

Мне нужно установить ограничение для backBtn, naviTitle, bell, order. я установить ограничение как этот

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) 

Но это не будет работать

ответ

0

Сначала я думаю, вы должны отключить маску

автоматического изменения
backBtn.translatesAutoresizingMaskIntoConstraints = false 
naviTitle.translatesAutoresizingMaskIntoConstraints = false 
bell.translatesAutoresizingMaskIntoConstraints = false 
order.translatesAutoresizingMaskIntoConstraints = false 

Затем восстановить ваши ограничения, как те, которые не могут быть удовлетворены в то же время

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

Ваше backBtn расстояние от супервизора не может быть 0 и 15 в то же время , то же самое для остальных этих ограничений.

 Смежные вопросы

  • Нет связанных вопросов^_^