美文网首页
iOS 用 JSON 写静态视图

iOS 用 JSON 写静态视图

作者: 木子才 | 来源:发表于2017-10-01 15:44 被阅读0次

这是一个好玩的想法,现在就让我将这个好玩的设计实现出来吧。
我的设计模型是:

{}

上面的是我最简单、最基础的模型,他代表着一个视图。

{
  self = {};
  items = ();
}

这个模型目前定义了两个字段,一个是"self",一个是"items"。
很简单:
"self" 是负责自身的属性,任何有关于视图自身的内容,我都建议放在这里;
而 "items" 是代表子视图的意思,有多少个子视图,就视乎你放了多少个模型。

还有一点,那就是这个语法问题,不知道你发现没有,其实这个是OC的字典写法,和一般的JSON有不同的地方,不过其实也差不多,而且一来是可以直接被字典读取,二来是可以省去很多双引号的写法(特殊的还是要写上)。

例子:

{
    self = {
        color = FF00FF;
        layout = {
            T = 0;
            B = 0;
            L = 0;
            R = 0;
        };
        direction = vertical;
        style = menu;
    };
    items = (
    {
        self = {
            color = random;
        };
    },
    {
        self = {
            color = random;
        };
    },
    {
        self = {
            color = random;
            direction = V;
            style = list;
            listVariable = 100;
        };
        items = (
            {
                self = {
                    color = random;
                    variable = 50;
                };
            },
            {
                self = {
                    color = random;
                    variable = 150;
                };
            },
            {
                self = {
                    color = random;
                    variable = 100;
                };
            }
        );
    }
    );
}

实现:

2430BEF68F25B38B4CE80321637F6B6F.png

最新完整的语法:

{
    self = {
        class = 存在的视图类名;
        tag = 数字;
        identifier/ID = 任意字符;
        color/C = random/R/16进制;
        direction/D = horizontal/H/vertical/V;
        style/S = menu/list;
        listVariable/listVar = 浮点数;
        variable/var = 浮点数;
        layout = {
            top/T = 布局内容值;
            bottom/B = 布局内容值;
            left/L = 布局内容值;
            right/R = 布局内容值;
            width/W = 布局内容值;
            height/H = 布局内容值;
            leading = 布局内容值;�
            trailing = 布局内容值;
        };
        layer = {
            cornerRadius/CR = 浮点数;
            borderWidth/BW = 浮点数;
            borderColor/BC = 浮点数;
            masksToBounds/MTB = 布尔值;
        };
    }:
}
布局内容值:
./.top/.T/.bottom/.B/.left/.L/.right/.R/.leading/.trailing/.width/.W/.height/.H 后面均可以加上正负浮点数,前面可以加上存在的视图的标识identifier/ID的值。

内容更新信息:

MZCDicToView

字典转变成视图

by:木子才

v 0.2
2017.10.1
重新设计解析逻辑。
基础字段"self" 新增:"identifier"/"ID"(用了记录视图,方便后面引用该视图协助布局)、"tag"。
将布局字段纳入"self" 的新子字段 ”layout“中。布局字段的内容值方面,不推荐使用".="。由于新增了记录视图的功能,所以布局的内容值可以使用新方式布局,如:T=abc.B50;(abc为某个视图的标识。)
基础字段"self" 的颜色字段"color",增加"C" 别名,以及随机值的内容值"random"/"R"。
加入指定布局:基础字段"self",新增 "direction"/"D"(用来对指定布局方向的指定:"horizontal"/"H","vertical"/"V"),新增 "style"/"S"(用于指定布局)。
基础字段"self" 的 指定布局风格 子字段 "style",包括:"menu"(不可滑动,平均分配大小),"list"(可滑动,可指定"self"下的"listVariable"/"listVar",父视图指定子视图在没有指定的情况下用来指定大小的,"variable"/"var",视图指定自己在父视图下的大小)。


v 0.1
2017.9.30
基础字段有"self"、"items"。
"self" 包含了布局字段("top"/"T"、"bottom"/"B"、"left"/"L"/"leading"、"right"/"R"/"trailing"、"width"/"W"、"height"/"H",支持对前一个对象利用布局操作:"."/".="、".top"/".T"、".bottom"/".B"、".left"/".L"/".leading"、".right"/".R"/".trailing"、".width"/".W"、".height"/".H",后面可以加上数值偏移),类字段("class",用来创建视图,没有则默认为UIView类),颜色字段("color",目前只支持16进制的表示方式,如:FF00FF),层字段("layer",对视图层的操作,包含这些子字段:"cornerRadius"/"CR"、"borderWidth"/"BW"、"borderColor"/"BC"、"masksToBounds"/"MTB")。
"items" 包含了基础字段,这个是一个数组,记录的是当前视图的子视图内容。

相关文章

  • iOS 用 JSON 写静态视图

    这是一个好玩的想法,现在就让我将这个好玩的设计实现出来吧。我的设计模型是: 上面的是我最简单、最基础的模型,他代表...

  • iOS 用 JSON 配置TabBar?

    这个是基于用 JSON 写静态视图的设计改进的,直接上代码(图片)看看吧。 iPhone iOS 11:横向: 竖...

  • Laravel 前后台共享数据

    在视图模板中初始化JS变量。 5.5以后可以这么写, 用 @json Blade 指令替代手动 json_enco...

  • UML核心视图

    UML核心视图包括两类。 静态视图:用例图、类图、包图 动态视图:活动图、状态图、时序图、协作图 4.1 静态视图...

  • iOS:一用就上瘾的跑马灯视图

    iOS:一用就上瘾的跑马灯视图 iOS:一用就上瘾的跑马灯视图

  • UML图

    一、基本概念 如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动...

  • 《H5 App开发》HBuilder打包成app 状态栏的颜色问

    沉积式样式(透明) ios: 打开应用的manifest.json文件,切换到代码视图,在plus -> dist...

  • 【UML图】 静态视图

    静态视图是UML的基础。静态视图当中的元素都是在系统当中有意义的概念。静态视图说明了对象的结构。静态视图将行为实体...

  • JSONRenderKit - 探索用JSON 写iOS UI

    JSONRenderKit 更简单,更方便地生成iOS 新界面 ? ? ? 可以说是十分有趣的一个库了,简要说明 ...

  • http请求静态json文件没有response

    用angular 的 http模块请求静态的json文件时,因为json的格式写错了,导致response一直没有...

网友评论

      本文标题:iOS 用 JSON 写静态视图

      本文链接:https://www.haomeiwen.com/subject/lvhaextx.html