LayoutKit

iOS应用视图布局库
授权协议 Apache
开发语言 Swift
所属分类 iOS代码库、 视图布局(View Layout)
软件类型 开源软件
地区 不详
投 递 者 洪季萌
操作系统 跨平台
开源组织 LinkedIn
适用人群 未知
 软件概览

LayoutKit 是一个高性能的iOS应用视图布局库。

LayoutKit 的主要优点:

  • 速度快:性能可以与专门写的定制的布局代码相媲美,比Auto Layout快非常多;

  • 异步:在后台线程中做布局运算,所以不会干扰与用户的交互;

  • 声明性的:用不可变的数据结构声明布局,这样更容易开发、审核、调试和维护布局代码;

  • 可缓存的:布局结果都是不可变的数据结构,所以可以在后台线程中计算并缓存,可以非常大的提升性能;

而且 LayoutKit 还很好用:

  • UIKit友好:LayoutKit生成UIView,也提供适配器来方便与UITableView和UICollectionView一起使用;

  • 国际化:可以自动为从右到左的语言调整视图;

  • Swift:可以在Swift应用中使用;

  • 成熟:单元测试覆盖率超过90%,已经用于最新版的LinkedIn iOS应用;

Hello world

let image = SizeLayout<UIImageView>(width: 50, height: 50, config: { imageView in
    imageView.image = UIImage(named: "earth.jpg")
})

let label = LabelLayout(text: "Hello World!", alignment: .center)

let stack = StackLayout(
    axis: .horizontal,
    spacing: 4,
    sublayouts: [image, label])

let insets = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 8)
let helloWorld = InsetLayout(insets: insets, layout: stack)
helloWorld.arrangement().makeViews(in: rootView)
  • YogaKit 最轻量,改动量最小,目的最纯粹,同时也最类似于使用 frame ,需要自己造一波在 UITableView 中使用的轮子(各类 frame 结果缓存方案)。同类的备选方案是 FlexBoxLayout FaceBook的 ComponentKit 看起来像是个 React 在 OC 上的重新实现。单向数据流看起来很美好。但是做了这种程度的隔离之后,在现有 UIKit 项目中混用似乎

 相关资料
  • 英文原文:http://emberjs.com/guides/views/adding-layouts-to-views/ 视图可以拥有一个次模板来包裹其主模板。如同模板一样,布局是可以插入到视图标签下的Handlebars模板。 通过设置layoutName属性来配置视图的布局模板。 而布局模板通过Handlebars的{{yield}}助手来指定在哪里插入主模板。视图渲染后的template的

  • 我有一个自定义视图CustomLayout(蓝色,自定义UIView),该视图包含3个子视图,通过使用约束(布局锚定)垂直对齐,每个视图按照以下顺序对齐: 1视图:幻灯片(红色,自定义UIView) 我想,当我单击按钮(黄色)时,如果使用动画打开,SlideLayout(红色)的高度大小会增加,如果关闭,则会减少。和其他视图必须在动画期间更改位置,如果SlideLayout增加/减少,则父视图(C

  • 我有这个布局。 但问题是,ExpandableListView总是以屏幕为中心,尽管父布局中有重力。我想要的是让它从ListView结束的地方开始。知道是什么原因吗?我应该使用滚动视图而不是线性布局吗? 我希望可扩展的listview出现在listview下方。

  • Rails 布局和视图渲染 本文介绍 Action Controller 和 Action View 中布局的基本功能。 读完本文,你将学到: 如何使用 Rails 内建的各种渲染方法; 如何创建具有多个内容区域的布局; 如何使用局部视图去除重复; 如何使用嵌套布局(子模板); 1 概览:各组件之间的协作 本文关注 MVC 架构中控制器和视图之间的交互。你可能已经知道,控制器的作用是处理请求,但经

  • 我遇到了自动布局的问题,似乎无法找到应该很容易实现的答案。 我有以下视图层次结构: 标签上的前导/尾随限制使它们在更薄的设备上更高(iPhone 4s vs iPhone 6)。 为了让UIScrollview正常工作,我需要在UIScrollView内部设置UIView的高度约束,以避免出现“不明确的高度”警告。 但在iPhone 4s上运行时,UIView不够高,无法容纳它的子视图。 到目前为

  • 我刚刚编写了一个仅带有LinearLayout的简单Android应用程序。我将此LinearLayout用作类的属性和方法的本地对象(例如在onCreate方法中)。 第一种情况:作为财产的线性布局 第二种情况:作为方法对象的线性布局 在这两种情况下,都没有错误。然而,当我在模拟器或设备上运行时,第一个案例出现了如下错误。为什么?我认为这个问题是由方法引起的。在调用onCreate方法之前,该方

  • 是否有任何方法可以使用android: fillViewport="true"和一个子LinearLayout填充所有视图,当LinearLayout的内容不够高时? 到目前为止,在ScrollView中的LinearLayout中,我们必须使用Android:layout _ height = " wrap _ content "。我们可以添加一些东西来填充所有的滚动视图吗?