今天发现一大牛,把android上的布局方式用到了ios,一直感觉ios的布局计算坐标点太费劲,反而android的布局方式却很简单方便,最近发现了一个在ios上实现了android的简单布局,感觉很不错,推荐给大家....
下载地址:
https://github.com/youngsoft/MyLinearLayout
众所周知,对于IOS开发者来说,随着手机屏幕的尺寸在增多,不可避免的也需要考虑适配的问题了。这个问题在IOS6以前我们可以通过autoresizingMask和frame进行组合来解决视图伸缩、旋转的适配,但是这个方案不彻底还是需要编写很多的代码来完成;而在IOS6以后推出了AutoLayout的解决方案,这个方案的实现和可操作性太过于复杂和繁琐不仅编写的代码特别多,就是在XIB上进行布局约束也很麻烦和难以管理。于是乎有大牛就对AutoLayout进行了改造和精简推出了一些简化自动布局的框架比如:
Masonry库:
https://github.com/Masonry/Masonry
CocoaUI库:
https://github.com/ideawu/CocoaUIDemo
我有幸的拜读和简单使用了一下这些库,发现确实有一些好处,可以简化视图布局的处理。但使用起来还是有一些麻烦,这些库都是对IOS的AutoLayout进行封装而已。因此本身如果不对自动布局不很了解的话也很容易绕道复杂的约束冲突中去;IOS8后因为有了4.7寸,5.5寸的屏幕后推出了sizeClass来进行布局,从这个解决方案的提出就可以看出苹果其实对AutoLayout的支持只不过是一个过渡的方案而已(本质上来说还是AutoLayout的方案过于复杂)。
那么有了这些后为什么我们还是不能满足??还要提出MyLinearLayout解决方案?
1.我们的应用还要支持到6.0以下。
2.我是一个老程序员不想学习新的布局语言。
3.AutoLayout,size Class语法过于晦涩而且不好控制,我的frame甚至无法使用了,我的动画特效也不好处理了。
4.MyLinearLayout的方法和使用逻辑简单,易用而且功能强大。
5.支持国产原创的库发展。
如果上述理由您没有一条同意的话那么可以关闭掉这篇文章了。
对于视图的布局来说,android系统的解决方案相对来说还是比较好的,对于android系统来说我们基本上不需要设置视图摆放的具体位置,因此一般也不需要设置视图的绝对位置值和绝对大小值,而是通过wrap_content,match_parent来指定视图本身的相对高度和宽度,同时通过LinearLayout, RelativeLayout,FrameLayout等布局来决定里面子视图的排列和摆放的位置,通过weight,padding,margin,gravity等属性来设置视图尺寸比例和排列对齐以及间距方面的东西, 而对于IOS来说我们以前编码时对于视图的布局总是通过setFrame来实现,用这种方法进行编程的最大的问题是我们必须在代码中写死很多位置的常量,而且还要自己进行计算高度和宽度以及边距等等,一般屏幕尺寸不同还需要对不同的尺寸进行处理,同样对于AutoLayout来说我们需要在代码里面编写大量的约束,造成的结果就是代码复杂和难以理解,对于维护来说更加是个灾难,而对于布局的微调更加是一个灾难。
基于上面的各种因素以及参考,MyLinearLayout横空出世了:https://github.com/youngsoft/MyLinearLayout
MyLinearLayout的实现充分参考了Android中的LinearLayout布局,但是却比LinearLayout更为强大,他几乎可以实现AutoLayout的所有功能甚至其不具备的功能。MyLinearLayout是一个基于流式布局的容器视图,我们只需要把子视图添加到MyLinearLayout中,并设置一些简单的约束参数那么就可以完成各种布局的要求了,而且后续中只要子视图的位置和大小进行变化都会触发容器视图里面的子视图进行重新布局。
分享到:
相关推荐
在Android中,我们有线性布局(LinearLayout)、相对布局(RelativeLayout)和帧布局(FrameLayout)等,它们各自具有明确的定位规则。这个iOS工具可能提供了类似的API和工作原理,使得开发者可以像在Android环境中...
很多开发者一听说Android终端的屏幕尺寸五花八门,屏幕分辨率千奇百怪,就觉得Android开发在屏幕适配方面是必定是一件头疼的事情。因为在Android问世之前,广大开发者知道的UI解决方案大致分为两类: 1、在Web开发中...
因此,您可以使用LinearLayout、RelativeLayout、FrameLayout、TableLayout、FlowLayout、LayoutSizeClass来构建应用程序,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux...
Android-MyLinearLayout.zip,mylayout是objective-c实现的一个功能强大的ios界面框架,它集成了android布局、ios自动布局、sizeClass、html css float、flexbox和bootstrap等功能。因此,您可以使用LinearLayout、...
在Android中,布局(Layout)是控制UI元素排列和对齐的核心工具,常见的布局有线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和网格布局(GridLayout)等。此项目可能使用了这些布局...
TangramKit是一个用于iOS视图布局的简单便捷的Swift框架。 这个名字来自中国的七巧板,它提供了一些简单的功能来构建各种复杂的界面。 它集成了以下功能:iOS的Autolayout和SizeClass,Android的五个布局类,float...
而布局则是用来组织和排列这些视图的容器,常见的布局有线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和网格布局(GridLayout)等。 1. **线性布局(LinearLayout)**:线性布局是...
el1 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android....
在Android中,我们主要使用XML来定义界面布局,包括线性布局(LinearLayout)、相对布局(RelativeLayout)以及帧布局(FrameLayout)等。对于底部弹出框,我们可以选择使用帧布局,因为它允许我们在指定位置上叠加...
5. **布局管理**:`OptionsPickerView`需要正确地在屏幕中展示,因此开发者需要了解Android的布局管理系统,如线性布局(`LinearLayout`)、相对布局(`RelativeLayout`)或者帧布局(`FrameLayout`)等。...
- **线性布局 (LinearLayout)**:分为垂直和水平两种布局方式。 - **相对布局 (RelativeLayout)**:控件之间的位置关系基于父容器或其他控件的位置。 - **表格布局 (TableLayout)**:用于创建表格形式的数据展示。 -...
Android的布局包括FrameLayout、LinearLayout、TableLayout和RelativeLayout。 【VideoView组件】 VideoView组件可以播放视频,控制播放位置和大小,支持3gp等格式,但不能控制播放的速度。 【Notification管理】 ...
1. **布局管理**:在Android中,常见的布局有线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和网格布局(GridLayout)。为了模仿人人网的界面,开发者可能会使用RelativeLayout来...
在界面布局方面,文档详细介绍了线性布局LinearLayout、相对布局RelativeLayout、表格布局TableLayout、网格布局GridLayout以及帧布局FrameLayout等。这些布局方式是构建Android应用用户界面的基本组成要素,开发者...
Android支持多种布局方式,如线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)等,开发者可以根据需求选择合适的布局方式,实现美观且易用的界面设计。 综上所述,基于Android平台的...
- **相对布局(RelativeLayout)**:根据子视图之间的相对位置进行布局。 - **帧布局(FrameLayout)**:允许子视图堆叠,最后一个添加的视图会覆盖其他视图。 - **绝对布局(AbsoluteLayout)**:在具体坐标上...