MGEStyles 1.0.0

MGEStyles 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布上次发布2015年4月

Manuel García-Estañ 维护。



MGEStyles 1.0.0

一种将自定义样式设置到任何 UIResponder 的简单方法,从 Interface Builder 获得。

摘要

作为一名 iOS 开发者,我常常感到在 Xcode 的 Interface Builder 中设置视图的一致样式非常困难。如果你思考一下一个 UILabel,你可以在不同的 UIViewController 中使用相同样式(字体、颜色和大小)为一系列标签。如果设计在一段时间后发生变化,你必须逐个更改这些标签的属性,这是一项繁琐的工作。我尝试通过开发 MGEStyles 来解决这个问题。这个库受到 Android 样式 的影响,简化了这个任务,让您有机会在单个位置定义完全自定义的样式并在整个项目中使用它,无论是通过 Interface Builder 还是代码。

MGEStyles 提供了两个版本,默认精简。唯一的区别是默认版本在 Interface Builder 中添加了一个可检查的属性,而精简版本则没有。有关更多详细信息,请参阅应用样式部分

安装

手动

克隆或下载项目,并将 MGEStyles 文件夹的内容复制到您的项目中。然后,如果您喜欢精简版本,可以删除 Inspectable 文件夹。

用途

该库通过三个步骤工作

1 - 您必须创建所需的样式

2 - 您必须注册应用程序中希望使用的所有样式。

3 - 在界面 builder 中或使用代码将样式应用于您的 UIResponder

创建样式

在这个库中,样式是 MGEStyle 对象。每个样式将有一个配置块,该块将告诉库如何处理 UIResponder。例如,如果您想创建一个为 UILabel 设计的样式,您将这么做

MGEStyle * baseStyle = [MGEStyle styleWithConfigurationBlock:^(UILabel *responder) {
        responder.font = [UIFont boldSystemFontOfSize:16];
        responder.numberOfLines = 0;
    }];

MGEStyles 允许继承。当一个 MGEStyle 有一个父对象时,父对象的配置块将在自己的块之前执行。这意味着子样式可以通过在它自己的配置块上设置所需的值来覆盖父块的一些行为。例如,我们可以通过以下方法创建前面样式的子样式

MGEStyle * titleStyle = [MGEStyle styleWithParent:baseStyle
                                    configuration:^(UILabel *label) {
                                              label.textColor = [UIColor redColor];
                                              label.textAlignment = NSTextAlignmentCenter;
                                          }];

注册样式

要注册样式,您必须使用一个名为 MGEStylesManager 的类,它是一个单例。每个已注册的样式都有一个键,它必须是应用内唯一的,并且这是识别样式的唯一方法。要注册样式,您必须调用

- (void) registerStyle:(MGEStyle *) style withKey:(NSString *) key;

例如,如果我们想注册已经定义的 titleStyle,我们将这样做

MGEStylesManager * manager = [MGEStylesManager sharedManager];
[manager registerStyle:childStyle withKey:@"LabelTitleStyle"];

样式应该在应用启动时注册,所以 application:didFinishLaunchingWithOptions: 似乎是一个很好的地方来做这件事。无论如何,为了使 AppDelegate 尽可能保持干净,强烈建议创建一个辅助类来创建和注册所有样式,并从 AppDelegate 中调用这个类。

应用样式

最后一步是应用样式。有两种方法可以做到这一点

使用界面构建器

当您使用 默认 风味时,界面构建器的属性检查器中出现了一个新的属性。它被称为 Mge Style。在这里,您应该提供要应用的已注册样式的键

如果您正在使用 Lite 风味或您的 Xcode 版本不支持 IBInspectable,您可以通过在 用户定义的运行时属性 部分添加一个新的属性来实现相同的结果。该名称必须是 mgeStyle,类型必须是 String,值必须是您的已注册样式的键

通过代码

MGEStylesUIResponder 提供了一个分类,允许将样式应用到任何 UIResponder。如果您想将 "LabelTitleStyle" 应用到一个标签上,您可以通过以下方式实现:

[mge_applyRegisteredStyleWithKey:key];

您还可以应用一个未注册的样式

MGEStyle * style = [MGEStyle styleWithConfigurationBlock:^(UIButton *button) {
        [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        responder.numberOfLines = 0;
    }];

[button mge_applyStyle:style];

联系

@ManueGE

许可协议

MGEStyles 在 Apache 许可协议下可用。见 LICENSE