zoukankan      html  css  js  c++  java
  • SwiftUI-CSS样式系统探索

    样式系统指的是对 UI 设计视觉规范中,提炼出来的一些规范。如项目的整体色调及字体、字号

    image

    image

    样式系统 对 App 开发存在的意义

    1. 当UI设计师出具完项目的整体UI视觉规范之后,开发通过提炼样式系统,对整体视觉有更好的全局掌握。 对于UI设计师,梳理视觉规范,定义哪些是通用规则,哪些是个性规则,哪些是基础规则,以及如何对基础规则进行运算;开发提供样式接口时,需要在实现视觉要求的基础上,还能够保证扩展性和易读性。在对视觉规范有深入理解之后,设计出来的视觉规范会更有用,更健壮。

    2. 在日常工作中,快速实现效果是非常重要的,希望我们的样式:

    • 可复用。如果视觉稿是按照原有规范实现的,那么新需求里的页面,也可以使用已有的样式来快速搭建,就像搭积木一样。

    • 易维护。而且实际工作中,在某个具体页面迭代最多的恐怕就是视觉优化了。如果使用的样式系统,在处理:二行变三行、按钮右上角加个图标、整个文字描述块整体向右移动等等需求变化时,如果能够快速实现,而不是需要结构大改(这样容易改出新问题),那么说明样式系统和 UI 接口划分是面向需求变化的。能够应付大部分(需求增改,就是个设计良好的组件。

    iOS 开发里的样式系统

    Cocoa touch 并没有提供样式系统的语法,一般可能会自己封装一层,大部分封装都比较简单。比方说只对 App 里的按钮封装了工厂类;或者只对 Label 设置字号、字体、颜色做了封装,没有形成进一步封装形成样式系统。 原因在于Cocoa touch 设计之初就没有考虑用对象来表示一组属性,没有设计样式系统的概念,导致在封装实现样式系统时比较困难。

    SwiftUI-CSS

    • SwiftUI把描述性界面开发体验带到 iOS,它的函数式语法和属性对象方式,使得可以用Swift-CSS 来实现 SwiftUI 里样式系统。

    SwiftUI 里的链式语法,是函数式函数调用的体现。SwiftUI 实体分为 View 和 ContentModifier。Text("g_kumar") 负责视图结构;.font(.title) 添加属性样式

    Text("g_kumar")
          .bold()
          .font(.title)
    Text("Notifications: (self.profile.prefersNotifications ? "On": "Off" )")
    Text("Seasonal Photos: (self.profile.seasonalPhoto.rawValue)")
    Text("Goal Date: (self.profile.goalDate, formatter: Self.goalFormat)")
    • 样式封装。CSSStyle 对象来封装样式对象,然后通过 addClassName 这个 modifier 来将样式插入函数运算中,和其他事件、通知、样式(.frame .resizable)一起无缝协作。
    // without SwiftUI-CSS
    Image("image-swift")
                     .resizable()
                     .scaledToFit()
                     .frame(100, height:100)
                     .cornerRadius(10)
                     .padding(EdgeInsets(top: 10, leading: 0, bottom: 15, trailing: 0))
    // with SwiftUI-CSS
    let languageLogo_clsName = CSSStyle([
        .width(100),
        .height(100),
        .cornerRadius(10),
        .paddingTLBT(10, 0, 15,0)
    ])
    Image("image-swift")
            .resizable()
            .scaledToFit()
            .addClassName(languageLogo_clsName)

    其中,languageLogo_clsName就是 logo 的样式名,在页面其他 logo,可以直接复用这个样式。

  • 相关阅读:
    Vue框架构造
    JavaScript-改变this指向
    前端发展史
    python篇第10天【For 循环语句】
    python篇第10天【While 循环语句】
    python篇第8天【运算符】
    python篇第6天【数据类型】
    python篇第5天【变量】
    Python篇函数总结【输出函数】
    python篇第3天【编码规范】
  • 原文地址:https://www.cnblogs.com/liuxiaokun/p/12676760.html
Copyright © 2011-2022 走看看