smartwalle

12 个库

KIActionSheet

KIActionSheet.

许可协议: MIT

  • Objective-C

KIAdditions

KIAdditions.

许可协议: MIT

  • Objective-C

KICaptureKit

KICaptureKit

许可协议: MIT

  • Objective-C

KIEncoding

KIEncoding 是 iOS 平台上的编码和解码工具套件。它包含 RSA、AES 等等。

许可协议: MIT

  • Objective-C

KIFFmpeg

适用于 iOS 的 FFmpeg。

许可协议: MIT

  • Objective-C

KIGroupButton

KIGroupButton.

许可协议: MIT

  • Objective-C

KIImageViewer

KIImageViewer.

许可协议: MIT

  • Objective-C

KIOpenSSL

OpenSSL 是一个 SSL/TLS 和加密工具套件。在 Mac OS 中已弃用,在 iOS 中已移除,本规范为您的项目提供非弃用 OpenSSL 支持。支持 iOS 包括模拟器(armv7、armv7s、arm64、i386、x86_64)。

许可协议: 自定义

  • Objective-C

KIPageView

KIPageView

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

  • Objective-C

KIParallaxView

KIParallaxView.

许可协议: MIT

  • Objective-C

KIRefreshView

KIRefreshView.

许可协议: MIT

  • Objective-C

KIView

KIView.

许可协议: MIT

  • Objective-C