UISS-iOS7 1.1.1-pdtgct.1

UISS-iOS7 1.1.1-pdtgct.1

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

未署名 维护。



UISS-iOS7 1.1.1-pdtgct.1

  • Robert Wijas

什么 是 UISS?

UISS 代表 UIKit Style Sheets。

UISS 是一个 iOS 库,它提供了一种方便的方式来自定义您应用程序的样式。UISS 构建在 UIKit UIAppearance 代理之上。

UISS 可以为您做什么?

UISS 有能力

  • 用简单的 JSON 字典替换不可读的 UIAppearance 代码,
  • 提供了一种更改应用程序样式的方法,无需重新构建您的代码,无需重新启动应用程序,甚至无需重新加载视图 - 这正是 UISS 的特性之一。

设计目标

UISS 不对您的应用程序施加任何依赖。您可以为 UISS 样式生成 Objective-C 代码,这样您甚至不需要在生产构建中链接 UISS 库。

但实际看起来是什么样子?

假设您熟悉 UIAppearance 代理,您可能已经编写了类似的代码

[[UITabBar appearance] setTintColor:[UIColor darkGrayColor]]

在 UISS 中,它看起来像这样

{
    "UITabBar": {
        "tintColor": "darkGray",
    }
}

这里没有太大区别,让我们看看更复杂的例子

[[UIButton appearance] setTitleColor:[[UIColor whiteColor] colorWithAlphaComponent:0.800]
                            forState:UIControlStateNormal];
[[UIButton appearance] setTitleColor:[UIColor whiteColor]
                            forState:UIControlStateHighlighted];
[[UIButton appearance] setBackgroundImage:[[UIImage imageNamed:@"button-background-normal"]
              resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 10.0, 0.0, 10.0)]
                                 forState:UIControlStateNormal];
[[UIButton appearance] setBackgroundImage:[[UIImage imageNamed:@"button-background-highlighted"]
              resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 10.0, 0.0, 10.0)]
                                 forState:UIControlStateHighlighted];
[[UILabel appearanceWhenContainedIn:[UIButton class], nil] setFont:[UIFont fontWithName:@"Copperplate-Bold" size:18.0]];
[[UIButton appearance] setTitleEdgeInsets:UIEdgeInsetsMake(1.0, 0.0, 0.0, 0.0)];
{
    "UIButton":{
        "titleColor:normal":["white", 0.8],
        "titleColor:highlighted":"white",
        "backgroundImage:normal": ["button-background-normal", [0,10,0,10]],
        "backgroundImage:highlighted": ["button-background-highlighted", [0,10,0,10]],
        "titleEdgeInsets": [1,0,0,0],
        "UILabel":{
            "font":["Copperplate-Bold", 18]
        }
    }
}

安装

  • 获取代码
  • 将 UISS.xcodeproj 添加到您的项目中
  • (可选)将 UISSResource.bundle 添加到您的目标

配置 UISS

本地

开始使用 UISS 最简单的方法是创建 uiss.json 文件并将其添加到项目的资源中。要激活此文件,请添加以下行

[UISS configureWithDefaultJSONFile];

这应该在您的视图显示之前调用,这是 Application Delegate 的 didFinishLaunching 方法的常见位置。

远程

如果您想从远程位置加载风格以启用实时更新,请按照以下方法操作

self.uiss = [UISS configureWithURL:[NSURL URLWithString:@"https://127.0.0.1/uiss.json"]];

实时更新

UISS 可以检测您的样式是否已更改并自动更新您的界面。要启用此功能,请调用此方法

uiss.autoReloadEnabled = YES;
uiss.autoReloadTimeInterval = 1;

状态栏

uiss.statusWindowEnabled = YES;

UISS 将占用屏幕的一小部分(通常由状态栏占用)来显示幕后正在发生的事情。

控制台

轻触UISS状态栏将显示控制台视图,在其中

  • 你可以获取关于样式中错误的详细信息
  • 你可以为样式生成UIAppearance代码

语法

轴参数

包含

转换器

UISS为所有用于设置UIAppearance属性的值类型均提供了值转换器。这些转换器提供了定义属性的快捷方式和便利的语法。

以下是几个示例以及Objective-C中的等效值。

颜色

十六进制

"#ffffff"
[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1]

默认 UIColor 颜色

"red"
[UIColor redColor]
"redColor"
[UIColor redColor]

带有图案图的色彩

"patternImageName"
[UIColor colorWithPatternImage:@"patternImageName"]

RGB

[0, 255, 255]
[UIColor colorWithRed:0.0f green:1.0f blue:1.0f alpha:1.0f]

带有alpha的色彩

["#ffffff", 0.5]
[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:.0.5f]
["red", 0.5]
[[UIColor redColor] colorWithAlphaComponent:0.5f]
[0, 255, 255, 0.5]
[UIColor colorWithRed:0.0f green:1.0f blue:1.0f alpha:.0.5f]

图片

简单图片命名

"imageName"
[UIImage imageNamed:@"imageName"]

可调整大小图片

["imageName", 1, 2, 3, 4]
[[UIImage imageNamed:@"imageName"] resizableImageWithCapInsets:UIEdgeInsetsMake(1, 2, 3, 4)]

字体

14
[UIFont systemFontOfSize:14.0f]
["bold", 14]
[UIFont boldSystemFontOfSize:14.0f]
["italic", 20]
[UIFont italicSystemFontOfSize:14.0f]
["Georgia-Italic", 12]
[UIFont fontWithName:@"Georgia-Italic" size:12.0f]

文本特性

{
    "font": ["bold", 12],
    "textColor": "black",
    "textShadowColor": "lightGray",
    "textShadowOffset": [1, 2]
}
[NSDictionary dictionaryWithObjectsAndKeys:
 [UIFont boldSystemFontOfSize:12], UITextAttributeFont,
 [UIColor blackColor], UITextAttributeTextColor,
 [UIColor lightGrayColor], UITextAttributeTextShadowColor,
 [NSValue valueWithUIOffset:UIOffsetMake(1, 2)], UITextAttributeTextShadowOffset, nil];

结构

CGSize

JSON Objective-C
1 CGSizeMake(1, 1)
[1] CGSizeMake(1, 1)
[1, 2] CGSizeMake(1, 2)

CGRect

JSON Objective-C
[1, 2, 3, 4] CGRectMake(1, 2, 3, 4)

UIEdgeInsets

JSON Objective-C
[1, 2, 3, 4] UIEdgeInsetsMake(1, 2, 3, 4)

UIOffset

JSON Objective-C
1 UIOffsetMake(1, 1)
[1] UIOffsetMake(1, 1)
[1, 2] UIOffsetMake(1, 2)

CGPoint

JSON Objective-C
1 CGPointMake(1, 1)
[1] CGPointMake(1, 1)
[1, 2] CGPointMake(1, 2)

UIKit 枚举

UIBarMetrics

JSON Objective-C
默认 UIBarMetricsDefault
横向电话 UIBarMetricsLandscapePhone

UIControlState

JSON Objective-C
正常 UIControlStateNormal
高亮显示 UIControlStateHighlighted
禁用 UIControlStateDisabled
选中 UIControlStateSelected
预留 UIControlStateReserved
应用 UIControlStateApplication

UISegmentedControlSegment

JSON Objective-C
任何 UISegmentedControlSegmentAny
左侧 UISegmentedControlSegmentLeft
中间 UISegmentedControlSegmentCenter
右侧 UISegmentedControlSegmentRight
单独 UISegmentedControlSegmentAlone

UIToolbar位置

JSON Objective-C
任何 UIToolbar位置任意
底部 UIToolbar位置底部
顶部 UIToolbar位置顶部

UISearchBar图标

JSON Objective-C
搜索 UISearchBar图标搜索
清除 UISearchBar图标清除
书签 UISearchBar图标书签
结果列表 UISearchBar图标结果列表

变量

您可以在UISS样式中定义变量。所有变量都应在您的样式字典中的变量键下定义。引用变量时,请在其名称前加上$符号。

示例

{
    "Variables": {
        "tintColor": "red"
    },

    "UIToolbar": {
        "tintColor": "$tintColor"
    }
}

用户界面习语

有时,您可能希望iPhone上的外观与iPad上稍有不同。使用UISS,您可以创建仅适用于指定UI习语的样式部分。

{
    "UINavigationBar": {
        "Phone": {
            "tintColor": "gray"
        },
        "Pad": {
            "tintColor": "lightGray"
        }
    }
}

注释

JSON规范不支持注释。但有时能够轻松禁用UISS样式的一部分可能非常有用。您可以通过在字典键前添加-前缀来实现。UISS将忽略这些键而不会报告错误。

示例

{
    "UIToolbar": {
        "-tintColor": "blue",
        "backgroundImage:any:default": "background"
    },
    "-UITabbar": {
        "tintColor": "blue"
    }
}

这只会设置UIToolbar的背景图像。