zoukankan      html  css  js  c++  java
  • 1.NSLayoutConstraint 设置优先级 2.删除更新约束(添加标识)

     //显示提交按钮 时的约束

        private var svBottomCon:NSLayoutConstraint?
        
        //隐藏提交按钮 时的约束
        private var svUpdateBottomCon:NSLayoutConstraint?
    
    
        //显示有数据的UI , 不能编辑,隐藏提交按钮  此时设至 高约束等级 defaultHigh 

    func showDataUI(){

        bindCardView.updateTempUI()
        self.submitBtn.isHidden
    = true
        if #available(iOS 11.0, *) {
           svUpdateBottomCon
    = scrollView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20)
        }
    else {
           svUpdateBottomCon
    = scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20)
        }
         svUpdateBottomCon?.priority = UILayoutPriority.defaultHigh svUpdateBottomCon?.isActive = true 
     }

    //默认UI 设置 第一次的约束等级是
    defaultLow
      if #available(iOS 11.0, *) { 
        scrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant:
    20).isActive = true
        svBottomCon
    = scrollView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -102)
        submitBtn.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant:
    -30).isActive = true
        }
    else {
        scrollView.topAnchor.constraint(equalTo: view.topAnchor, constant:
    20).isActive = true
        
    svBottomCon = scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -102)
        submitBtn.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant:
    -30).isActive = true
       }
        
       svBottomCon
    ?.priority = UILayoutPriority.defaultLow
       svBottomCon
    ?.isActive = true

    删除约束 操作:可以查看  源码:

    https://github.com/jiyongTeam/JYFilterView

    1. 给约束添加标识

                    // 每个的约束,追加identifier
                    let topConstraint =  currentItem.topAnchor.constraint(equalTo: self.itemsContainerView.topAnchor, constant: (itemHeight + itemYSpacing) * CGFloat(i))
                    topConstraint.identifier = "JYFilterItemView"
                    topConstraint.isActive = true
                    let widthConstraint = currentItem.widthAnchor.constraint(equalTo: self.itemsContainerView.widthAnchor, multiplier: itemWidthScale, constant:  -spacingItemGapWidth)
                    widthConstraint.identifier = "JYFilterItemView"
                    widthConstraint.isActive = true
                    let heightConstraint = currentItem.heightAnchor.constraint(equalToConstant: itemHeight)
                    heightConstraint.identifier = "JYFilterItemView"
                    heightConstraint.isActive = true
                    if lastItem == nil{
                        let leftConstraint =
                            currentItem.leftAnchor.constraint(equalTo: self.itemsContainerView.leftAnchor, constant: horizontalMagin)
                        leftConstraint.identifier = "JYFilterItemView"
                        leftConstraint.isActive = true
                    }else{
                        let leftConstraint = currentItem.leftAnchor.constraint(equalTo: (lastItem?.rightAnchor)!, constant: itemXSpacing)
                        leftConstraint.identifier = "JYFilterItemView"
                        leftConstraint.isActive = true
                    }
                    // 最后一行
                    if i == rows - 1{
                        let bottomConstraint = currentItem.bottomAnchor.constraint(equalTo: self.itemsContainerView.bottomAnchor, constant: 0)
                        bottomConstraint.identifier = "JYFilterItemView"
                        bottomConstraint.isActive = true
                    }
    

      

    约束更新处理, 删除原来的约束

            //约束更新的处理: 删除子视图相关的所有约束
            let associatedConstraints = itemsContainerView.constraints.filter {
                $0.identifier == "JYFilterItemView"
            }
            NSLayoutConstraint.deactivate(associatedConstraints)
            itemsContainerView.removeConstraints(associatedConstraints)
            
            itemViewList.forEach {
                let itemConstraints = $0.constraints.filter {
                    $0.identifier == "JYFilterItemView"
                }
                NSLayoutConstraint.deactivate(itemConstraints)
                $0.removeConstraints(itemConstraints)
            }
          
      
         //业务逻辑 for item in itemViewList{ item.updateViewStyle(style.itemViewStyle) } configItems()

      

  • 相关阅读:
    进程二
    高德地图api的使用
    《架构即未来》读后感3
    三周总结
    性能战术:
    二周总结
    《 架构即未来》读后感2
    一周总结
    《架构即未来》读后感
    学生信息系统dao层
  • 原文地址:https://www.cnblogs.com/qingzZ/p/12329985.html
Copyright © 2011-2022 走看看