JVAlertController
是适用于 iOS 7 的 `UIAlertController` 的 API 兼容回溯。
考虑以下场景
1. 您希望分发一个静态库。
2. 您希望该静态库支持 iOS 7。
3. 您的静态库提供了包含警报或操作表的用户界面流程。
4. 您还希望该静态库可用于 iOS 8 扩展。
问题
UIAlertView
和 UIActionSheet
是 NS_EXTENSION_UNAVAILABLE
受限制的 API,因此不能用于 iOS 8 扩展。即使在 iOS 7 上通过运行时检查通过您的对 UIAlertView
/UIActionSheet
的调用,以及 iOS 8 上的 UIAlertController
调用也无法解决这个问题。
只需像平时一样调用 UIAlertController
。
JVAlertController
会做 absolutely nothing -- 所有工作都由系统框架完成。JVAlertController
,并且表现像 iOS 7 上的 UIAlertView
和 UIActionSheet
一样。UIAlertView
/UIActionSheet
的 iOS 7 API 不是 100% 可翻译到 UIAlertController
。特别是,showFromToolbar:
、showFromTabBar:
和 showFromRect:
这些概念不存在。因此,JVAlertController
在某些方面模拟了 UIAlertController
的 iOS 8 实现。JVAlertController
渲染的视图并不是它们的框架对应物的像素完美表示。这主要是因为苹果在它们的私有类中捆绑的视觉效果。话虽如此,用户不太可能注意到任何重大的差异。JVAlertController
并不是刻意重造 UIAlertView
或 UIActionSheet
在 iOS 7 实现中的错误。(在 Config.h
中打开 USE_SYSTEM_IOS7_IMPLEMENTATION
并应该能够找到一些示例)JVAlertController
和标准 iOS 7 警报/操作表之间发现任何不一致性,请请创建一个问题。JVAlertController
从 Cédric Luthi 的 NSUUID 项目 借用了一些 ObjC 运行时 asm 巧技。
Jared Verdi
麻省理工学院许可证(MIT)版权 © 2015 Jared Verdi
兹此授予任何获得本软件及其相关文档副本(统称“软件”)的个人,免费无限制地处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供他人可以如此使用的权利,但需遵守以下条件:
上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是基于买卖、特定用途适用性或非侵权性的担保。在任何情况下,作者或版权持有人对所有索赔、损害或其他责任(无论因合同行为、侵权或其他原因而产生),概不承担法律责任,包括但不限于因使用软件或与其相关的软件或使用软件产生的损害或损失。