240 发简信
  • 120
    MJRefresh源码分析

    一直好奇下拉刷新类的框架是怎么实现,这周看了star最多的MJRefresh。源码继承结构清晰,实现的较为巧妙。 1. header初始化 MJ...

  • layoutSubViews()、setNeedsLayout()、layoutIfNeeded() 的用法

    layoutSubViews默认没有做任何事情,需要子类进行重写 。 系统在很多时候会去调用这个方法: 1.初始化不会触发layoutSubvi...

  • Category

    分类就是对一个类的功能进行扩展,让这个类能够适应不同情况的需求。在实际开发中,我们都会对系统的一些常用类进行扩展,比如NSString、Butt...

  • adjustContentInset属性的计算方式

    scrollView在iOS11新增的两个属性:adjustContentInset 和 contentInsetAdjustmentBehav...

  • DZNEmptyDataSet源码解析

    DZNEmptyDataSet (github接近1万星)是一个能够为UITableView、UICollectionView自动添加空页面提示...

  • Run Loop

    如果我们需要一个模型,让线程能随时处理事件但并不退出,这种模型通常称作Event Loop.实现这种模型的关键点在于:如何管理事件、消息,如何让...

  • iOS Swift Transition animation and Interaction 转场动画、交互

    已经封装好了,拿走就能用,完整的项目已经上传到github上了项目地址

  • swift GCD

    队列的创建和获取: 如何设计一个线程安全的字典或数组? 在编码过程中,对数组进行多线程写入,会引起崩溃: 采用部分代码加锁可解决这一问题: 在实...

  • 120
    UIPopoverPresentationController

    1.效果如下: 实现代码如下: