AJLayoutKit 0.0.1

AJLayoutKit 0.0.1

AijunX维护。



  • aijun198600

AJLayoutKit

AJLayoutKit 为 iOS Auto Layout 添加了一些语法糖,使用接近 VFL 的语法,并且可以方便地使用百分比布局。语法糖参考了 Stevia,并进行了一些改进。

  • 宽度/高度父容器百分比
  • 间隔父容器百分比
  • 支持安全区域
  • 修改 AJValue 自动更新约束(暂时有 bug)

使用示例

	self.view.layout(
            |-(10% + 10)-title,
            |-(10% + 10)-panel-(10% + 10 ^ "right ratio span")-|,
            &-title-(10 ^ "title bottom")-panel,
            panel.layout(
                |-15-avatar.width(20%)-15-name-15-level-15-vip,
                &-15-avatar-15-&,
                &-15-name-15-desc,
                avatar.Width == avatar.Height,
                equal(.centerY, name, level, vip),
                equal(.leading, name, desc)
            ),
            ||v1.size(50% + 15)-(50% - 15)-|,
            &-(50% - 15)-v1.size(50% + 15)
        )

生成的界面如下: screen_shot_1

布局方式主要有三种:

  1. 类似于 VFL 的链式语法,|代表父容器以及水平方向布局,&代表父容器以及垂直方向布局,||表示水平布局,&&表示垂直布局,在 iOS 11 的版本上默认支持安全区域。
  2. 关联属性关系,类似于 avatar.Width == avatar.Height,支持语法 attr1 == attr2*multiplier + constant ~ priority
  3. 使用函数定义,比如 UIView 的 size,width,height,或者是 equal。

AJValue

可以使用下面的语法来定义一个 AJValue 值,并将其用于所有的间隙、宽度、高度等内容,语法如下:

let v: AJValue = ratio% + constant ~ priority ^ "identifier"

同时也有三个函数来定义 AJValue

  1. func vw(_ value: Double) -> AJValue,类似于 CSS 中的 vw 单位,效果相当于 screenWidth * value / 100
  2. func vh(_ value: Double) -> AJValue,类似于 CSS 中的 vh 单位,效果相当于 screenHeight * value / 100
  3. func rpx(_ value: Double) -> AJValue,类似于微信小程序或者 weex 中的单位,效果相当于 screenHeight * value / 750