【问题标题】:NSLayoutconstraints not working as expectedNSLayoutconstraints 没有按预期工作
【发布时间】:2021-10-19 02:39:27
【问题描述】:

以下代码未按预期工作。 InfoLabel 未添加到视图中。我按照 viewDidLoad 中提到的顺序调用以下方法。任何快速帮助/见解都会很棒。 谢谢! 注意:我已经在视图控制器中声明了所有变量,并且在调用相应的设置块之前没有设置任何属性。

       
        self.view.addSubview(cancelButton)
        cancelButton.translatesAutoresizingMaskIntoConstraints = false
        cancelButton.addTarget(self, action: #selector(cancelButtonClicked(_:)), for: .touchUpInside)
        let constraints = [
            cancelButton.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
            cancelButton.widthAnchor.constraint(equalToConstant: 40),
            cancelButton.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
            cancelButton.heightAnchor.constraint(equalToConstant: 40)
        ]
        NSLayoutConstraint.activate(constraints)
        print(cancelButton.frame)
    }
    
    private func saveButtonSetup(){
        
        self.view.addSubview(saveButton)
        saveButton.translatesAutoresizingMaskIntoConstraints = false
        saveButton.addTarget(self, action: #selector(saveButtonClicked(_:)), for: .touchUpInside)
        let constraints = [
            saveButton.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
            saveButton.widthAnchor.constraint(equalToConstant: 40),
            saveButton.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
            saveButton.heightAnchor.constraint(equalToConstant: 40)
        ]
        NSLayoutConstraint.activate(constraints)
        print(saveButton.frame)
    }
    
    private func TitleLabelSetup(){
       TitleLabel.backgroundColor = UIManager.Colors.cellBGColor
        TitleLabel.textAlignment = .center
        TitleLabel.font = UIManager.Fonts.titleFont
       TitleLabel.textColor = UIManager.Colors.titleColor
        self.view.addSubview(TitleLabel)
        let constraints = [
            TitleLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor/*self.cancelButton.trailingAnchor*/,constant: 0),
           TitleLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor/*self.saveButton.leadingAnchor*/, constant: 0),
            TitleLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor),
            TitleLabel.heightAnchor.constraint(equalToConstant: 40)
        ]
        NSLayoutConstraint.activate(constraints)
        print(TitleLabel.frame)
    }
    
    private funcInfoLabelSetup(){
        self.view.addSubview(InfoLabel)
        let constraints = [
            InfoLabel.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor,constant: 0),
           InfoLabel.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0),
            InfoLabel.topAnchor.constraint(equalTo: TitleLabel.bottomAnchor,constant: 1),
            Label.heightAnchor.constraint(equalToConstant: 40)
        ]
        NSLayoutConstraint.activate(constraints)
        print(InfoLabel,InfoLabel.frame)
    }
    
    }```

【问题讨论】:

    标签: ios swift iphone frame nslayoutconstraint


    【解决方案1】:

    您的closureInfoLabel 和closeRequestTitleLabel 的translatesAutoresizingMaskIntoConstraints 未设置为false。

    【讨论】:

      【解决方案2】:

      你的约束是错误的。 您将leadingAnchor 锚定到view 的 trailingAnchor 和 trailingAnchor 到view 的leadingAnchor。你还需要设置 translatesAutoresizingMaskIntoConstraintsfalse

      这里是更正:

      private func closureInfoLabelSetup(){
          self.view.addSubview(closureInfoLabel)
          closureInfoLabel.translatesAutoresizingMaskIntoConstraints = false
          let constraints = [
              closureInfoLabel.leadingAnchor.constraint(equalTo: self.view.leadingAnchor,constant: 0),
              closureInfoLabel.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0),
              closureInfoLabel.topAnchor.constraint(equalTo: closeRequestTitleLabel.bottomAnchor,constant: 1),
              closureInfoLabel.heightAnchor.constraint(equalToConstant: 40)
          ]
          NSLayoutConstraint.activate(constraints)
          print(closureInfoLabel,closureInfoLabel.frame)
      }
      
      

      【讨论】:

        猜你喜欢
        • 2020-03-18
        • 2012-06-14
        • 2014-11-15
        • 1970-01-01
        • 2012-07-02
        • 2011-09-07
        • 2013-03-03
        • 2015-05-18
        • 2018-12-31
        相关资源
        最近更新 更多