SwiftStylish 1.1.0

SwiftStylish 1.1.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2022年10月
SPM支持 SPM

DSR 公司 iOS 团队 维护。



  • DSR

SwiftStylish 是一个 Swift 框架,允许您使用样式文件以方便的方式样式化 UI 元素。

要求

  • iOS 13.0+
  • Xcode 11.0+
  • Swift 5.0+

安装

CocoaPods

CocoaPods 是 Cocoa项目的依赖管理器。您可以使用以下命令安装它

$ gem install cocoapods

要使用 CocoaPods 将 SwiftStylish 集成到您的 Xcode 项目中,在 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'TargetName' do
pod 'SwiftStylish'
end 

然后,运行以下命令

$ pod install

用法

import "SwiftStylish" 添加到您打算使用该框架的地方。

框架为您提供了 SwiftStylisher 包装器。

  • 应用样式类到元素
try SwiftStylisher.default.loadFile(filename: "HomeStyle", bundle: styleFileBundle)
try SwiftStylisher.default.applyStyle(className: ".nameLabel", forObject: self.usernameLabel)
  • 使用变量应用样式类

    1. 从文件加载变量并加载样式文件。
    2. 应用样式。
try SwiftStylisher.default.loadVariablesFile(filename: "StyleVariables", bundle: styleFileBundle)
try SwiftStylisher.default.loadFile(filename: "HomeStyle", bundle: styleFileBundle)

try SwiftStylisher.default.applyStyle(className: ".nameLabel", forObject: self.usernameLabel)

查看SwiftStyle是如何工作的获取关于应用样式的信息。

变量

框架支持变量,存储在独立的样式类文件中。任何文件类型都可以使用。
变量必须使用键分割成根级组

以下情况下变量不会被解析

  • 变量的类型与组类型不匹配。
  • 使用类解析方法解析。

错误
title_font的值不会被解析。

{
	"_description": "wrong colors",
    "@colors":{
        "title_font": { "name": "Arial", "size": 16 },
    }
}

正确

{
    
    "@colors":{
        "light_background": "#6ef2d1",
        "dark_background": "#0e9a8e"
    },
    "@fonts":{
        "title_font": { "name": "Arial", "size": 16 },
        "selected_cell_font": { "name": "Arial", "size": 12 }
    },
    "@numbers":
    {
        "label_number_of_lines": 3,
        "pading": 10,
        "width": 170
    }
}

支持注释和其他文件的引入。

{
	"_description": "Blue theme includes.",
    "@include": ["BlueThemeColors", "BlueThemeFonts", "BlueThemeNumbers"]
}

文件加载器

要应用样式,首先需要从文件中加载它们。框架为您提供JSON和Plist文件的加载器。
可以通过实现LoaderProtocol协议来创建其他文件类型的加载器。

支持的文件格式

默认情况下,SwiftStylish支持以下文件类型

  • JSON - JSONLoader
  • Plist - PlistLoader

不能引用或不从不同文件类型的文件继承。建议使用一个文件类型来完成项目。样式文件可以是不同文件类型,如果没有引用其他文件类型的文件则是允许的。

示例

JSON格式在该项目中使用。您想要在一些屏幕上使用PLIST。此PLIST文件不能引用JSON文件。解析器将搜索类似类型的文件,即PLIST。

样式库

解析器完成工作后,所有解析的资源都存储在StyleRepository中。

描述

可以使用 _description 键添加注释。此键不会影响任何内容。您可以在 JSON 体的任何地方自由添加。

{
    "_description": "this is a description for style file.",
    "@classes": {
        "_description": "This is a base rounded button class.",
        ".roundedButton": {
        		"_description": "Red background color property.",
        		"background-color": "#ff0000"
        }
    }
}

系统键

支持的系统键

  • @classes
  • @preload
  • @state
  • @include

类 (@classes)

每个样式文件必须包含具有字典值的基本元素 @classes
文件的所有根类是这个基本字典中的键。

{  
   "_description":"this is a description for style file.",
   "@classes":{  
      "_description":"base rounded button style definition.",
      ".roundedButton":{  
         "_description":"Red background color property.",
         "background-color":"#ff0000",
         ".saveButton":{  
            "@preload":".roundedButton",
            "text":"Save"
         },
         ".deleteButton":{  
            "@preload":".roundedButton",
            "text":"Delete"
         }
      },
      ".tableView":{  
         "background-color":"#30a9f2",
         ".header":{  
            "background-color":"clear"
         }
      }
   }
}

类继承(@preload & @include)

可以使用 @preload 键通过单个类或多个类实现样式类的继承。

语法

"@preload": [ String ]

"@preload": String

作为字符串或它们的数组接受完整的类路径。

可以使用 @include 键包含其他文件的类。
传递一个包含与当前样式文件相同类型的文件名的数组。

语法

"@include": [ String ]

首先向仓库加载父样式中的属性,然后设置子样式中的其他属性。

示例

{  
   "@include":[  
      "ParserTests1"
   ],
   "@classes":{  
      "_description":"Description for root class.",
      ".root":{  
         ".class1":{  
            "background-color":"#0000ff",
            "color":"#ff0"
         },
         ".class2":{  
            "@preload":".root.class1",
            "background-color":"#00ff00"
         },
         ".class3":{  
            "@preload":[  
               ".root.class1",
               ".root.class2"
            ],
            "background-color":"#ff0000"
         }
      }
   }
}

在这个例子中,class3 中的结果 backgrounColor 值为 #ff0000

控制状态 (@state )

可以使用 @state 键指定任何支持它的 UI 元素的控制状态。

有关详细信息,请参阅 控制状态

支持样式键与值

查看所有支持的样式键,请访问 支持的键

查看所有支持的值类型,请访问

许可协议

SwiftStylish 采用 MIT 许可协议发布。详细信息请查看 LICENSE 文件。