• Swift编码总结4


    1.swift @discardableResult 声明:

    swift正常的方法如果有返回值的话,调用的时候必须有一个接收方,否则的话编译器会报一个警告,
    如果在方法前加上 @discardableResult 不处理的时候就不会有警告了。也可以用一个通配符接收方法返回值,可以达到同样的目的。

    2.控制器初始化:

    init(urlStr: String?) {
            super.init(nibName: nil, bundle: nil)
            if let urlStr = urlStr {
                self.urlStr = urlStr
            }
        }
    UIView初始化:调用父类initWithFrame

    3.更新View的约束:

    /// 更新二级菜单约束
        private func updateSecondCategoryLayout(){
            if let tempHeight = height {
                secondCategoryView.needsUpdateConstraints()
                tempHeight.update(offset: 42)
                UIView.animate(withDuration: 0.25) {
                    self.secondCategoryView.layoutIfNeeded()
                }
            }
        }

    4.上拉加载更多:

    printTable.mj_footer = MJRefreshAutoNormalFooter(refreshingBlock: { [weak self] in
                guard let `self` = self else {return}
                if self.pageNum <= self.totalPage {
                    self.loadData()
                } else {
                    self.printTable.mj_footer.endRefreshing()
                    self.printTable.mj_footer.endRefreshingWithNoMoreData()
                }
            })

    5.UIView.performWithoutAnimation:

    UIView.performWithoutAnimation {
                        planDiscountCollectionView.reloadSections(IndexSet(integer: IndexSet.Element(0)))
                    }
    
    //视图转换时不执行动画,参数为block对象,来执行你要执行的代码
    + (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation

    6.十进制转换:

    if tempTextCount.decimalValue > NSDecimalNumber(string: WaiterManager.shared.waiterPower(PowerCode.ignore)?.powerValue).decimalValue {
    }

    7.限制textField只能输入3个字符:

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
            
            let currentCharacterCount = textField.text?.count ?? 0
            let newLength = currentCharacterCount + string.count - range.length
            return newLength <= 3
        }

    8.变量安全使用使用set方法private,可以调方法改变值:

    class HHTComboGlobalData: NSObject {
        static let shared = HHTComboGlobalData()
    
        private(set) var comboModes:[ComboModel] = []
        
        func setComboModel(with dicts:[JSONDictionary]) {
            comboModes.removeAll()
            comboModes = dicts.flatMap { (dict) -> ComboModel? in
                return ComboModel(with: dict)
            }
        }
    }

    9.for循环创建九宫格:

    private func setupUI() {
            let count: Int = 5
            let  CGFloat = 100
            let height: CGFloat = 50
            let bgViewWidth: CGFloat = 844
            let col: Int = 3
            // 间距
            let hMargin = (bgViewWidth - (CGFloat(col) * width)) / CGFloat((col+1))
            let vMargin:CGFloat = 20
            
            var row:Int = 0
            for i in 0..<count {
                let button: UIButton = UIButton()
                button.setTitle("打印一", for: .normal)
                button.setTitleColor(UIColor.white, for: .normal)
                button.backgroundColor = UIColor.red
                if i%col == 0 {
                    row += 1
                }
                var y: CGFloat = 0
                if row == 1 {
                    y = 50
                } else {
                    y = vMargin + (height + vMargin) * CGFloat(row)
                }
                let x:CGFloat = hMargin + (width + hMargin) * CGFloat(i%col)
                button.frame = CGRect(x: x, y: y,  width, height: height)
                bgView.addSubview(button)
                bottomMargin = button.frame.maxY + 50
            }
            bgHeightConstraint.constant = bottomMargin!
        }
    }
  • 相关阅读:
    lhgdialogv3.13 使用点滴
    CheckBoxList 取值 及选中相关用法
    repeater 及 gridview 中绑定短日期
    数据库中日期大小的判断
    父子不同窗口间刷新传值
    子级Repeater获取父级Repeater绑定项的值
    vs.net 2010 web 项目中使用 webservice
    web打印实现方案 Lodop6.034 使用方法总结
    用 showModalDialog 方法回传数据到父页中去
    vs.net2010中使用 Ajax Control Toolkit
  • 原文地址:https://www.cnblogs.com/pengsi/p/8966611.html
Copyright © 2020-2023  润新知