AGImageChecker 是一个轻量级的 iOS 库,它帮助开发者找到其使用图像中的问题。它检测图像是否比其容器视图更小或尺寸不同,从而产生缩放或模糊的图像。错误的图像将有一个彩色的边框,帮助您检测它们。此外,它添加了长按手势以打开图像详情并查看有关问题的有用信息,如图像大小、视图大小、contentMode、Retina 版本的存在、关联视图控制器等。所有这些都不需要更改您的代码(设备和模拟器)。
其插件架构允许开发者轻松地添加库的功能。例如,Dropbox 插件,它提供了 Dropbox 同步功能,可以在运行时将图像导入导出到项目中,并加速与设计师的沟通。
您可以通过在 podfile 中设置来安装整个工具
pod 'AGImageChecker'
或者,您可以指定使用哪些模块
pod 'AGImageChecker/Base'
pod 'AGImageChecker/Dropbox'
推荐使用 CocoaPods 进行安装。但是,如果您在项目中不使用 pods,您仍然可以通过以下步骤进行
AGImageChecker/src
文件添加到您的项目中base
插件。插件可能有额外的安装说明。请参阅文档底部的插件详细信息。
注意:默认情况下,如果设置了 DEBUG
环境变量,AGImageChecker 即可工作。如果您想在发布环境(不推荐)中使用 AGImageChecker,请在项目的编译设置中的“预处理器宏”中定义 AGIMAGECHECKER
环境变量。因为 AGImageChecker 依赖于方法交换(Method Swizzling)并在应用中增加一些开销,因此在发布环境中使用 AGImageChecker 完全不推荐。
要激活 AGImageChecker,您可以在代码中添加类似以下内容(通常在 AppDelegate 中):
#import "AGImageChecker.h"
#if DEBUG
[[AGImageChecker sharedInstance] setRootViewController:self.tabRootController];
[[AGImageChecker sharedInstance] start];
#endif
针对仅调试发布的 #if
代码不是必需的,但这是一个好习惯,因为它可以在发布模式下节省一些不必要的调用。主视图控制器应设置为应用中的主视图控制器,通常是一个标签栏。
设置完成后,您将看到有问题的图像上会有不同颜色的边框。主要颜色包括以下内容:
长按图像视图将打开图像详情屏幕。
其他插件可能需要额外的设置才能工作。请查看文档底部的插件详细信息。
AGImageChecker 核心依赖于方法交换来挂钩以下代码
UIImage
加载设置 name
属性时添加信息UIImageView
的框架、内容模式或图像发生变化时检查 UIImageView
。最初考虑使用 drawRect
,但 UIImageView
很特别,并不会调用此方法。所有这些检查逻辑以及方法交换都可以在库中找到的 UIImageView+AGImageChecker
和 UIImage+AGImageChecker
分类中找到。除了方法交换外,值得一提的是,该库是设计为插件架构的。使用 AGImageCheckerPluginProtocol
在运行时查询插件。可以通过将插件添加到 AGImageChecker 或从中移除来插入或删除插件。《AGImageChecker》类遵循 Singleton 模式,并在调用 start 方法之前需要设置根视图控制器。您应该在更改根控制器之前先停止检查器。如果没有设置根控制器,它将尝试使用主窗口根视图控制器(如果已设置)。
执行检查逻辑并在图像详情视图中显示图像信息。
需要 QuartzCore
框架
提供了一个方便的方法来将应用图像共享到外部团队,如设计师。可以从图像详情视图中点击按钮将图像上传和下载到您的 Dropbox 账户。
需要 Dropbox SDK。Dropbox 框架包含在插件的 external
文件夹中,并在运行时需要 Security
和 QuartzCore
框架。
为了运行插件,请在启动您的 AGImageChecker 库之前添加以下代码:
#import "AGImageCheckerDropboxPlugin.h"
[AGImageCheckerDropboxPlugin addPluginWithAppKey:@"your app key" appSecret:@"your app secret"];
一些对 Dropbox SDK 的修改已添加,以便提供更简单的集成,无需在应用中添加 URL 模式或处理打开 URL 动作。如果您的项目中已经有用于其他用途的 Dropbox,则在使用此插件时,无法保证所有内容都会继续正常工作。
为了显示图片名称,它使用UIImageView
的accessibilityLabel
。该库将在您的应用中激活辅助功能,即使是在您的Interface Builder中,也能允许自动设置辅助功能标签,而不需要更改您的代码。然而,如果您想确保远程图像或程序加载的图像正常工作,请确保accessibilityLabel
设置正确。
为了显示图像视图关联的控制器,它会检查nextResponder
链,直到找到一个不是父视图的对象。这意味着它可能显示的信息可能不完全准确,但仍然应该是有帮助的。
从初始阶段开始,该库就使用TDD进行开发(SenTest + OCMock)。如果您计划添加功能,请额外花时间添加正确的测试。
在MIT许可证下提供。
欢迎提交分支、补丁和其他反馈。
AGImageChecker由Angel Garcia Olloqui提供。您可以通过以下方式联系我:
项目页面:AGImageChecker
个人主页:angelolloqui.com
领英:angelolloqui