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()

      

  • 相关阅读:
    UI复习笔记1
    PHP字符串 集合的相关函数
    PHP的基本知识点
    XMLDictionary 解析的使用
    Json解析
    数据库增 删 改 查
    UICollectionViewFlowLayout自定义
    除了自定义cell以为,还可以通过属性来控制cell线条的长度
    观察者模式
    PHP字符串相关的方法
  • 原文地址:https://www.cnblogs.com/qingzZ/p/12329985.html
Copyright © 2011-2022 走看看