MMLayershots 0.2.6

MMLayershots 0.2.6

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Vinh Phuc Dinh 维护。



  • vpdn

Layershots 可以将您的 iOS 应用程序视图层次结构转换为分层 Photoshop 文件。它是强化版的截图。

对现有应用程序的设计进行迭代可能会很繁琐。通常,原始设计资源已经不再可用或已过时。获取当前应用程序的平铺截图(png)可以提供最新的视图,但切片 UI 的部分并重建遮挡区域是很耗时的。

Layershots 可以稍微缓解这种痛苦:每次您截图应用程序时,都会从您的整个应用程序视图层次结构中生成了一个 Photoshop(PSD)文件。然后您可以取出 psd 文件,并将其导入到您喜欢的 psd 编辑工具(Photoshop、Pixelmator、Acorn 以及是的,甚至是 GIMP)中,并根据需要调整图层。

(静态)用例

在图形工具(如 Photoshop)中,视觉更改可以迭代得更快,因为它不需要编译/运行/导航周期。最终目标是 增加实验性

"如果图标是另一种颜色,它会是什么样子?"

color animation

"如果我们将聊天图标替换了,应用程序会是什么样子?"

icon animation

动画

“大多数人犯的错误是认为设计就是它的外观。人们认为这是这层皮 - 设计师拿到这个盒子,被告知,‘让它看起来很好!’ 这不是我们认为的设计。它不仅是它的外观和感觉,还有设计是如何工作的。” - 斯蒂夫·乔布斯

Framer.js 是我们目前拥有的最好的快速构建动画和交互的原型工具之一。将 psd 文件载入 Framer.js 中,并使用几行 JavaScript 就可以令您的 UI 生龙活虎。

framer.js sample

有关更多信息,请观看 Koen 介绍该框架 并确保也查看他们网站上的示例

设计者开场白

如果您是那些不会编写代码的设计师,以下几节可能看上去像是外星人父母写给外星人,以引导他回家的信息。请放心,将 Layershots 集成到您的应用程序中相当简单,无论谁和您一起开发应用程序,只需几行代码就可以完成集成。如果有问题,请随时在 Twitter 上联系我(@vpdn),如果我能帮忙,我将很高兴。

示例项目

示例项目通过git子模块链接到SFPSDWriter库。要运行示例,请首先克隆项目。

git clone https://github.com/vpdn/MMLayershots.git

运行以下命令以初始化子模块

git submodule update --init --recursive

如何使用Layershots?

推荐的安装方式是通过Cocoapods。将其添加到您的Podfile中

pod 'MMLayershots'

在Application代理中,初始化MMLayershots共享实例

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[MMLayershots sharedInstance] setDelegate:self];
    return YES;
}

只有一个强制性的代理方法,告诉Layershots在截图被捕获时要做什么

- (MMLayershotsCreatePolicy)shouldCreateLayershotForScreen:(UIScreen *)screen {
    return MMLayershotsCreateOnUserRequestPolicy;
}

返回MMLayershotsCreateNeverPolicy以禁用Layershots,返回MMLayershotsCreateOnUserRequestPolicy以将请求传递给用户(弹出窗口)或返回MMLayershotsCreateNowPolicy以立即触发psd的生成。

有两个可选的代理方法,一个是在生成psd之前调用(willCreateLayershotForScreen:),另一个是在psd生成之后调用(didCreateLayershotForScreen:data:)。使用后者可以将数据保存到文件或向用户展示“在...中打开”选项。

- (void)willCreateLayershotForScreen:(UIScreen *)screen {
    NSLog(@"Creating psd now..."); // you could hide away stuff such as user info, that you don't want to be in the psd
}

- (void)didCreateLayershotForScreen:(UIScreen *)screen data:(NSData *)data {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths firstObject];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"layershots.psd"];
    [data writeToFile:filePath atomically:NO];
    NSLog(@"Saving psd to %@", filePath);
}

iPhone模拟器

iPhone模拟器在保存截图时不会触发通知(rdar://17077229)。作为解决方案,请使用快捷键⇧⌘+S。

备注

  • 生成的psd文件当前大于其实际需要的大小。到现在为止还没有计算边界,所以每个图层都是全屏渲染的。(问题 #1
  • 图层目前没有分组
  • 图层都命名为“图层”。(问题 #2
  • 渲染的psd并不精确,可能存在问题。测试套件即将推出。(问题 #8
  • 目前Layershots仅支持纵向模式。(问题 #5

有关不完善/缺失功能列表,请查看github问题页面。如果你们能帮忙那就太好了!

感谢 :star2: