smartwalle

12 个库
OpenSSL 是一个 SSL/TLS 和加密工具套件。在 Mac OS 中已弃用,在 iOS 中已移除,本规范为您的项目提供非弃用 OpenSSL 支持。支持 iOS 包括模拟器(armv7、armv7s、arm64、i386、x86_64)。
许可协议: 自定义
UITableView 很强大,但只能竖向滚动;UICollectionView 可以解决各种布局难题,但稍微有点复杂,对于一些简单需求,有点杀鸡用牛刀的感觉。
在 iOS6 之前,还没有 UICollectionView,为了实现横向滚动的 UITableView,只能自己动手写组件。为了达到和 UITableView 差不多的效果,就得先弄清其内部实现机制。
在渲染 View 时,会消耗大量系统资源,如果创建大量的 View,系统运行将变得异常缓慢,甚至可能导致内存耗尽。但是在实际应用中,我们难免会遇到大量数据需要显示,如果我们每次显示数据时都创建一个 View,那应用程序的体验将相当糟糕。因此,Apple 为 iOS 开发者提供了 UITableView,Google 为 Android 开发者提供了 ListView。
简单来说,UITableView 采用复用机制,其只会显示其可见区域内的 UITableViewCell。我们在滑动的过程中,当超出 UITableView 可见区域的 Cell,将会从 UITableView 中移除,并加入回收池中以作复用。当 UITableView 需要显示新的 Cell 时,会先从回收池中查找是否有相应的 Cell 可以重用(通过 dequeueReusableCellWithIdentifier:)。如果有,则直接将其重新显示;如果没有,则创建新的 Cell。这样一来,就可以避免因创建过多的 View 而导致内存耗尽的尴尬情况。
了解了其内部的运行原理后,我们也可以实现一个自己的 UITableView。
一个非常常见的应用场景——显示图片:如果我们只想显示一张图片,用一个 UIImageView 就足够了,如果我们需要显示多张图片,并且可以左右滚动,最简单的方法是用一个 UIScrollView 包含多个 UIImageView,但这带来的后果是,如果图片数据量较大,那么这个程序根本无法正常使用。如果我们还需要实现无限循环滚动,这个解决方案肯定不行。所以这个时候,就得我们自己实现一个 UITableView。
最初,我写了一个名为 KIFlowView 的组件,实现了上面的需求,但这些都是 iOS5 时代的产物,难免有点过时。在后续的工作中也发现,类似的需求其实不少,比如可以左右滑动的 View,如网易新闻客户端,可以在不同的新闻栏目之间进行切换;有时候我们也需要实现一些 Tab,如果 Tab 的项目比较多,也需要考虑复用的问题,所以决定重新写一个增强组件,作为其替代品,于是产生了 KIPageView。
许可协议: MIT