AGImageChecker 1.0.1

AGImageChecker 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 BSD
发布最后发布2015年12月

Angel G. Olloqui 维护。



  • Angel G. Olloqui

AGImageChecker 是一个轻量级的 iOS 库,它帮助开发者找到其使用图像中的问题。它检测图像是否比其容器视图更小或尺寸不同,从而产生缩放或模糊的图像。错误的图像将有一个彩色的边框,帮助您检测它们。此外,它添加了长按手势以打开图像详情并查看有关问题的有用信息,如图像大小、视图大小、contentMode、Retina 版本的存在、关联视图控制器等。所有这些都不需要更改您的代码(设备和模拟器)。

AGImageChecker 截图   AGImageChecker 详细视图

其插件架构允许开发者轻松地添加库的功能。例如,Dropbox 插件,它提供了 Dropbox 同步功能,可以在运行时将图像导入导出到项目中,并加速与设计师的沟通。

通过 Pods 安装

您可以通过在 podfile 中设置来安装整个工具

pod 'AGImageChecker'

或者,您可以指定使用哪些模块

pod 'AGImageChecker/Base'
pod 'AGImageChecker/Dropbox'

手动安装

推荐使用 CocoaPods 进行安装。但是,如果您在项目中不使用 pods,您仍然可以通过以下步骤进行

  1. AGImageChecker/src 文件添加到您的项目中
  2. 从插件文件夹中移除不需要的插件。如果您想使用基本的 AGImageChecker 功能,应保留 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+AGImageCheckerUIImage+AGImageChecker 分类中找到。

除了方法交换外,值得一提的是,该库是设计为插件架构的。使用 AGImageCheckerPluginProtocol 在运行时查询插件。可以通过将插件添加到 AGImageChecker 或从中移除来插入或删除插件。《AGImageChecker》类遵循 Singleton 模式,并在调用 start 方法之前需要设置根视图控制器。您应该在更改根控制器之前先停止检查器。如果没有设置根控制器,它将尝试使用主窗口根视图控制器(如果已设置)。

插件

基础插件

执行检查逻辑并在图像详情视图中显示图像信息。

  • 安装说明

需要 QuartzCore 框架

Dropbox 插件

提供了一个方便的方法来将应用图像共享到外部团队,如设计师。可以从图像详情视图中点击按钮将图像上传和下载到您的 Dropbox 账户。

  • 安装说明

需要 Dropbox SDK。Dropbox 框架包含在插件的 external 文件夹中,并在运行时需要 SecurityQuartzCore 框架。

  • 使用说明

为了运行插件,请在启动您的 AGImageChecker 库之前添加以下代码:

#import "AGImageCheckerDropboxPlugin.h"
[AGImageCheckerDropboxPlugin addPluginWithAppKey:@"your app key" appSecret:@"your app secret"];
  • 其他注意事项

一些对 Dropbox SDK 的修改已添加,以便提供更简单的集成,无需在应用中添加 URL 模式或处理打开 URL 动作。如果您的项目中已经有用于其他用途的 Dropbox,则在使用此插件时,无法保证所有内容都会继续正常工作。

特殊注意事项

  • 为了显示图片名称,它使用UIImageViewaccessibilityLabel。该库将在您的应用中激活辅助功能,即使是在您的Interface Builder中,也能允许自动设置辅助功能标签,而不需要更改您的代码。然而,如果您想确保远程图像或程序加载的图像正常工作,请确保accessibilityLabel设置正确。

  • 为了显示图像视图关联的控制器,它会检查nextResponder链,直到找到一个不是父视图的对象。这意味着它可能显示的信息可能不完全准确,但仍然应该是有帮助的。

  • 从初始阶段开始,该库就使用TDD进行开发(SenTest + OCMock)。如果您计划添加功能,请额外花时间添加正确的测试。

许可证

在MIT许可证下提供。

协作

欢迎提交分支、补丁和其他反馈。

致谢

AGImageChecker由Angel Garcia Olloqui提供。您可以通过以下方式联系我:

项目页面:AGImageChecker

个人主页:angelolloqui.com

推特:@angelolloqui

领英:angelolloqui