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;

最新文章

  1. php多文件上传
  2. Nginx 配置支持C++
  3. 微信小程序需要https后台的创业机会思考
  4. Subime学习记录
  5. RTSP协议学习笔记
  6. Eclipse查看源码乱码问题
  7. php递归json类实例代码
  8. 日历的问题C语言,C++(boost),python,Javascript,Java和Matlab实现
  9. HDU 1434 幸福列车(优先队列)
  10. Android Material Design 系列之 SnackBar详解
  11. iOS应用如何得知用户有新拍的图片?
  12. 通过Hutool 调用远程API接口(POST/GET)
  13. js总结:增加和减少文本框
  14. 前端 -- CSS基础
  15. js+bootstrap实现分页页码
  16. python assert用法
  17. vue的双向绑定
  18. Oracle 12C -- CDB的启动过程
  19. Entity Framework应用:EntityFramework DataBase First模式
  20. sql server数据行号

热门文章

  1. String,StringBuffer,StringBuilder区别(笔记)
  2. 摘:J2EE开发环境搭建(1)——安装JDK、Tomcat、Eclipse
  3. 51nod1712 区间求和
  4. 注解@Transient
  5. 编程小白入门分享一:git的最基本使用
  6. EntityFramework6 学习笔记(三)
  7. ctx控制超时的使用
  8. springcloud(二)
  9. 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解
  10. 如何更改sdk版本