Skip to content

aijun198600/AJLayoutKit

Repository files navigation

AJLayoutKit

AJLayoutKit为iOS Auto Layout增加了一些语法糖, 使用接近VFL类似的语法,并且比较方便的使用百分比布局。语法糖参考了Stevia,并且做了一些改良。

  • 宽高父容器百分比
  • 间距父容器百分比
  • Safe Area支持
  • 修改AJValue自动更新约束

导入

可以使用cocoapods导入。

platform :ios, '9.0'
use_frameworks!

target 'MyApp' do
	pod 'AJLayoutKit'
end

使用示例

	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的版本上默认支持safe area。
  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

About

Auto Layout, Ratio layout

Resources

License

Stars

Watchers

Forks

Packages

No packages published