zoukankan      html  css  js  c++  java
  • Swift编码总结3

    1.编码转换:

    dataString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
    requestData.stringValue.removingPercentEncoding ?? ""

    2.取值需要判断为空设置为空,防止取值崩溃:

                    //总页数
                    let totalPageCount = dicData?["recordNum"] as? String
                    //菜品数据源
                    var dataSource = dicData?["orderInfo"] as? [Dictionary<String,Any>] ?? [Dictionary<String,Any>]()

    3.可以在UIView里添加刷新,block传递到控制器操作网络请求即可:

            //上拉加载
            historyTableView.mj_footer = MJRefreshAutoNormalFooter(refreshingBlock : {[weak self]() -> Void in
                self?.refreshBack?()
            })

    4.setNeedsLayout和layoutIfNeeded区别:

    不能直接调用这个方法layoutSubviews。强制刷新布局,调用 setNeedsLayout,如果想马上刷新界面,调用layoutIfNeeded

    setNeedsLayout

    标记为需要重新布局,不立即刷新,但layoutSubviews一定会被调用

    配合layoutIfNeeded立即更新

    layoutIfNeeded

    如果,有需要刷新的标记,立即调用layoutSubviews进行布局

    一般写在UIView动画里。

    https://yiweifen.com/html/news/WaiYu/74770.html

    http://ios.jobbole.com/84219/

    5.for循环推荐使用:

     for (index,item) in potTaste.details.enumerated() {  }
    
     data.forEach { (label, model) in {  }

    6.枚举不同的type,设置不同的属性:

    enum ButtonName {
        case Split(String,UIColor,UIColor)                  //拆分
        case Doubly(String,UIColor,UIColor)                 //倍增
        case Delay(String,UIColor,UIColor)                  //延迟
        case SureOrder(String,UIColor,UIColor)              //确认下单
        case Rush(String,UIColor,UIColor)                   //催菜
        case Confirm(String,UIColor,UIColor)                //确认上菜
        case Gift(String,UIColor,UIColor)                   //赠菜
        case GiveBack(String,UIColor,UIColor)               //退菜
        case ChangeTableDish                                //单品转台
    }

    7.Cell中接受多个model可以使用元组:

    typealias ModelTuple = (dishLabel: DishLabel, dishViewModel: DishViewModel)
    var model: ModelTuple!

    8.CollectionView 大量 Item 快速滑动时掉帧严重问题的优化:

    if #available(iOS 10.0, tvOS 10.0, *) {
                collectionView?.prefetchDataSource = self
            }

    9.convert。。。to。。。:

                // 将collectionView在控制器view的中心点转化成collectionView上的坐标
                var topPoint = CGPoint(x: UIScreen.main.bounds.size.width*0.5, y: NavigationBarH)
                var pInView = view.convert(topPoint, to: collectionView)

    10.MJRefresh根据拖拽比例自动切换透明度:

    let header = MJRefreshNormalHeader(refreshingTarget: self, refreshingAction: #selector(loadNew))
    // 设置自动切换透明度(在导航栏下面自动隐藏)
    header?.isAutomaticallyChangeAlpha = true;
  • 相关阅读:
    【一些思路】web和app测试的区别
    【Python】I/O和比赛的其他一些问题
    【Python】迭代器和生成器的个人理解,再讲一讲协程
    【TCP/IP】如果打不开一个网页,需要如何处理?
    DOM事件
    GASP动画的基本使用
    Velocity的使用方法
    Swiper和Swiper Animate使用方法
    DOM操作
    JavaScript函数
  • 原文地址:https://www.cnblogs.com/pengsi/p/8962264.html
Copyright © 2011-2022 走看看