ios 自动布局框架介绍

Thx:

先推荐一个非常厉害的IOS开发博客:唐巧的技术博客 ,博客中的业界良心,很多东西是从他博客里提及的入门的。他精挑细选了一些好的博客的链接,整理成周报形式,对于我这种不善于找资料的人来说,真的是及时雨。

自动布局框架也是看了他的技术合集中关于Masonry 介绍与实用

BEE 框架

入门门槛太高,只用过简单的类似 html 布局,暂不评论

以及UIView autolayout 框架和此框架介绍的相关布局框架

UIView+AutoLayout vs. the rest

原文

An overview of the Auto Layout options available, ordered from the lowest- to highest-level of abstraction.

    Apple NSLayoutConstraint SDK API
        Pros: Raw power
        Cons: Extremely verbose, tedious to write, difficult to read
    Apple Visual Format Language
        Pros: Concise, convenient
        Cons: Doesn't support some use cases, incomplete compile-time checks, must learn syntax, hard to debug
    Apple Interface Builder
        Pros: Visual, simple
        Cons: Difficult for complex layouts, cannot dynamically set constraints at runtime, encourages hardcoded magic numbers, not always WYSIWYG
    UIView+AutoLayout
        Pros: Simple, efficient, built directly on the iOS SDK, minimal third party code
        Cons: Not the most concise or pure expression of layout code
    High-level layout frameworks (Masonry, KeepLayout)
        Pros: Very clean, simple, and convenient
        Cons: Heavy dependency on third party code, cannot mix with SDK APIs, potential compatibility issues with SDK changes, overloaded Objective-C syntax

翻译版

苹果的 NSLayoutContraint SDK api :不好读不好写

苹果界面生成器:方便实用,不支持一些场景,不完整的编译时检查,必须学习语法,难以调试

UIView+Autolayout: 简单便捷,直接在ios 的SDK构建,最小的第三方代码,缺点:代码不够简洁

高级布局框架:如masonrykeeplayout 优点:非常干净,简单方便。 缺点:第三方库依赖,SKD api 变化是,无法及时兼容,重载OC 的语法。


最后选择了Masonry 作为项目的自动布局框架,考虑到需要代码简洁,第三方库依赖并没那么严重,SDK变化也是有人对应维护的,就算无人维护,深入框架看看是怎么实现的,对自己也是提升。

详情可见:

关于Masonry 介绍与实用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.该类的作用: 该类可以帮大家自动布局界面控件,不需要开发人员每个控件的设置属性,只需要调用方法,自动会设置该控件的布局,并且控件的宽度随着窗体的变化而变化,该方法调用很简单 二.原理:使用TableLayOutPanle的功能,然后设定里面每个控件的样式 三.使用方法: 1)首先在录入数据的地方用GroupBox或者Panle作为容器(目前里面配置了这2中数据信息用户可以在ParentControlHeader类中进行相应配置) 2)然后在该容器中加入TableLayOutPanle控件,并设定行和列(例如:设定6列,奇数列的宽度都是绝对值:例如100px ,偶数列的宽度都设定为33%) 3)大家可以把相应的控件放入到TableLayOutPanle的相应单元格子中,(奇数列是标题列,偶数列是输入列) 4)在Load事件中这样调用就OK了 TableFormat tf = new TableFormat(tableLayoutPanel1); //此方法可以适用于父级控件是GroupBox或者Panel,您也可一修改 ParentControlHeader类中的配置文件,加入新的值,或者是修改已经设定的值 tf.SetTableFormat(true, PControlType.GroupControl); 这样,大家不需要设定每个TableLayout控件中的子控件的任何属性,TableFormat类帮自动布局界面上的控件,并且随着窗体的变化,控件是自动变化的,当然里面有些参数,是可以设定父级控件(GroupPanle/Panle的高度=里面行高(自动计算)+用户配置高度(目前配置了GroupBox和Panle) 详细可见Demo,代码注释写的比较详细,大家可以参考下. 谢谢..^_^.. (鼓励0资源分上传)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值