iOS轻量级布局引擎 BLSmartLayoutEngine

背景

开发iOS原生app的时候不可避免有些场景需要手写UI,鉴于之前使用系统或者开源的布局框架影响到开发效率,所以抽空实现了一个简单的布局引擎BLSmartLayoutEngine.

BLSmartLayoutEngine主要解决UI布局两个痛点:

1:系统布局或者开源框架诸如autoresizing,auto-layout,Masonry等手工写起来相对比较繁琐开发效率低,并且Size Class有系统版本依赖,8.0以上的版本才能使用。

2:当后续版本迭代需要修改原来的UI布局时,这些框架显得非常不方便,反而加大了维护成本

简介

BLSmartLayoutEngine很好的解决了前面两个问题,手写UI布局易读懂并且很容易上手,可以很大程度上提高开发效率。

这里写图片描述

原本还想实现一个动态创建功能,UI布局从xml里面配置,BLSmartLayoutEngine负责读取和解析xml进行view的创建以及布局,没有像xib或者storyboard那么复杂。考虑到引入动态创建虽然提高了开发效率,但会导致这个布局引擎太重所以暂时没有实现。

BLSmartLayoutEngine并不能覆盖到所有的UI布局场景,特别是那些需要在布局过程做特殊动画的场景,如果考虑到很多的细节场景做支持,那么整个框架会变得很臃肿。BLSmartLayoutEngine目前能覆盖到大部分的静态布局场景,其它不适用的特殊场景还是需要自己实现。

特性

BLSmartLayoutEngine特性如下:

1:轻量级
主要类只有两个:UIView(BLSmartLayoutEngine)以及BLSmartLayout,前者实现了对UIView属性的扩展以实现从UIView层直接支持本布局引擎,BLSmartLayout主要是声明了布局接口

2:简单
如果要实现5个按钮等分等间距水平(横向)布局,使用手写代码或者autoresizing会比较繁琐,使用BLSmartLayoutEngine只需要两行代码即可实现,而且不需要重写UIView的layoutSubviews函数,直接在init里面设置即可,只需要关注扩展的layoutType,width,height属性,其它属性如不需要定制可不使用

3:兼容性
BLSmartLayoutEngine支持与其它布局方式共存,这里共存的意思是对于某些UI可以使用BLSmartLayoutEngine,如果不想使用则自己采用其它布局方式
BLSmartLayoutEngine从UIView层支持,新的UI直接使用此布局引擎即可,不影响原有的布局

4:扩展性
当前支持的布局类型有:HBox,VBox,Anchor,BLSmartLayoutEngine支持使用者扩展布局,例如有瀑布流等其他自定义的布局方式,只需要继承BLSmartLayout然后重新实现布局方法进行相应的自定义布局,之后将布局方式和类型进行注册即可

5:ARC/MRC支持
BLSmartLayoutEngine 采用ARC编 译,MRC/ARC编译的工程在使用时按照相应的内存管理方式即可

参考

源码:https://github.com/arlins/BLSmartLayoutEngine

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值