KXJsonUI 是一个用于 iOS 的 JSON 布局框架,它允许您使用 JSON 文件来构建用户界面。您可以在不使用界面构建器的情况下构建您的 UI。KXJsonUI 利用与 Android 布局管理类似的理念。使用本框架,所有 UI 布局都可以使用 KXLinearLayout 和 类来安排。
需要 iOS 8.0+ 和 ARC。
KXJsonUI_ios/KXJsonUI_ios/ code> 的所有子文件夹和 *.h, *.m, *.mm
文件添加到您的项目中。
QuartzCore.framework
添加到您的链接框架中。#import "KXJsonUI_ios.h"
。#import <KXJsonUI_ios/KXJsonUI_ios.h>
从 JSON 文件加载 UI 布局很容易。假设您要加载的 JSON 文件命名为 helloworld.json。请确保已将该文件添加到项目中。
使用 KXBuilder
从 JSON 文件解析和构建 UI 布局。
在您的ViewController.h文件中添加一个类型为 KXBuilder*
的属性。
@property(nonatomic, strong) KXBuilder *builder;
在您的ViewController.m中的-(void)viewDidLoad
方法中加载 JSON 文件
- (void)viewDidLoad {
[super viewDidLoad];
self.builder = [[KXBuilder alloc] init];
if( [self.builder loadFileWithName: @"helloworld.json"] ){
[self.builder buildLayoutInView:self.view];
}
}
这就是所有!启动视图控制器,您可以看到所有 UIView 都根据 JSON 文件的內容构建。
视图控制器中的 UIView 可以在 JSON 文件中写入。布局文件的基本结构如下所示,
{
"layout": {
"name": "root",
"widget": "CLASS_NAME_OF_A_UIVIEW_CLASS",
"attr": [
{
"name": "size",
"value": {
"width": "match_parent",
"height": "match_parent"
}
}
],
"subviews": [
]
}
}
所有UIView都表示在一个嵌套结构中。布局的根视图必须命名为root
。widget
属性值是UIView类的类名。例如,widget
的值可以是以下类之一:UIView
、UIButton
、UILabel
等。
attr
的值是一个数组,包含一个或多个视图的属性。每个属性都表示为一个name
、value
对。例如,可以在attrs
中配置颜色、大小和其他属性。
subviews
的值是一个数组,包含其子视图的属性。任何视图都可以有零个或多个子视图。
根视图的widget
值通常等于KXLinearLayout
或KXRelativeLayout
。在大多数情况下,我们使用这些类来管理不同屏幕尺寸下的视图。
这是一个简单的视图控制器示例,包含一个标签和两个按钮。
示例JSON文件
{
"layout": {
"name": "root",
"widget": "KXLinearLayout",
"attr": [
{
"name": "size",
"value": {
"width": "match_parent",
"height": "match_parent"
}
},
{
"name": "orientation",
"value": "vertical"
},
{
"name": "color",
"value": "#ffffff"
}
],
"subviews": [
{
"name": "label1",
"widget": "UILabel",
"attr": [
{
"name": "size",
"value": {
"width": "match_parent",
"height": "auto"
}
},
{
"name": "color",
"value": "yellow"
},
{
"name": "weight",
"value": 1
},
{
"name": "text",
"value": "Hello! This is label1!"
},
{
"name": "text_color",
"value": "#202020"
},
{
"name": "margins",
"value": {
"left": "4dp",
"top": "4dp",
"right": "4dp",
"bottom": "4dp"
}
}
]
}
]
}
}
上述示例描述了一个类型为KXLineLayout
的根视图及其子视图label1
的UILabel
类型。KXLinearLayout与Android中的LinearLayout类似。KXLinearLayout的子视图会根据orientation
和weight
属性进行排列。
我正在努力提供更多文档和教程。如果您想了解更多关于此框架的信息,建议您查看KXJsonUIDemo
项目中的示例。
KXJsonUI基于MIT许可证条款授权。请参见LICENSE文件以获取详细信息。
这个框架目前仍在开发中。如果您有任何建议,我非常愿意倾听。