Comments (5)
Android转iOS的福音,哈哈
from mylinearlayout.
很好的问题:
- 理论上来说每种界面都可以用所有布局来实现,但在实践中每种布局还是有特有的应用场景:
-
线性布局MyLinearLayout适合那些从上到下依次排列并且每行只有1个视图或者从左到右依次排列并且每列自由一个视图的场景。线性布局还有一点就是和UIScrollView结合来实现滚动,并成为某个界面的整体根布局视图,线性布局也提供了和tableview一样的能力,但是前者要比后者使用简单得多;
-
相对布局MyRelativeLayout则是和AutoLayout具有一样的功能,主要适合于那些界面完全不规则排列以及子视图之间的位置需要相互依赖而确定的场景;
-
框架布局MyFrameLayout其实是相对布局MyRelativeLayout的一个轻量级的子集布局,框架布局里面的子视图只和布局产生关系;
-
表格布局其实就是一个水平线性布局套多个垂直线性布局或者一个垂直线性布局套多个水平线性布局的实现,因此表格布局可以用来实现那些多行多列排列的场景;
-
流式布局MyFlowLayout则是一个可以实现多行多列有规律排列的场景,同时他是一个线性布局的超集,而且流式布局可以提供collectionview一样的能力,但是前者使用必要后者简单的很多,流式布局还是flexbox的一个功能子集,如果你熟悉WEB前端的flexbox技术的话就很好了解他了。
-
浮动布局MyFloat则是适合于那些图文结合,以及内容依次排列自动换行的场景,浮动布局也可以实现一些看似无规律排列但是实际是有规律的不规则界面的场景;
-
路径布局MyPathLayout则是通过提供一个函数来实现曲线布局的场景,比如圆环、弧形、扇形等等曲线函数的布局方式。
- 目前所有的布局的子视图都暂时不支持子视图复用的场景,因此如果是大量的重复数据以及界面时,还是推荐用tableview和collectionview, 但是里面的每个cell还是可以用布局视图去实现。如果你的界面是有限个子视图的话那么你就可以用线性布局和流式布局来代替系统的两种视图。
3.在我的最后的几个DEMO里面有介绍如果用各种布局代替tableview和collectionview的几个例子。
最后您可以加入QQ群:178573773 来一起探讨问题和解决问题。
from mylinearlayout.
谢谢您的支持。。
from mylinearlayout.
其实大神只需要告诉我们:
1:单一view里面布局子视图,可以用那种?
2: 固定高度,固定子视图的UITableViewCell可以用那种?如果行数一定,用那种?不定行数用那种?
3: 图文混排的,不定高度UITableViewCell用那种?行数不定(需要缓存高度)?行数固定?
4: 路径视图用那个?
from mylinearlayout.
-
理论上来说布局就是一个特殊的容器视图,只是每种布局视图里面的子视图的排列有特定的规则。其实每种布局都可以用来实现某个功能,只是体现在代码的多少,以及难易而已。至于哪种布局用那种场景,我在上面已经有了一个大概的说明了。
-
固定高度的cell的话用哪种布局也要根据界面UI来选择。如果你的列表就是那么十几行几十行那么就可以考虑不用UITableview了,而是考虑用一个UIScrollView + 线性布局来实现了。 如果是行数太多那么就要考虑复用了,这时候还是推荐用UITableview来实现,然后将布局实现在UITableviewCell中。
-
对于图文混排的场景,推荐的是用浮动布局
MyFloatLayout
因为浮动布局的理念是从CSS中的float属性而来的,而CSS中的float属性主要就用于那些图文混排的场景中;至于不定高度的UITableViewCell的话用哪种布局就看具体的界面UI了。布局视图的wrapContentHeight
属性可以用在任何布局中,而且可以很容易实现不定高度的UITableView上。至于您说的行数问题还是和问题2是一样的如果行数不多不需要考虑复用那么就用UIScrollView加线性布局的模式,如果考虑复用就用UITableView。至于您说的缓存高度的话因为布局系统里面做了一些优化具有一定的缓存高度的能力,因此用MyLayout进行布局的性能还是不错的。当然如果你还需要更加优化和更加流畅的体验效果那么你就需要自己去定制化一些策略了。
4.路径视图,可能就是你说的那些排列可能是在一个圆环上,或者在一个曲线上的界面。这种场景就非常的推荐用路径布局MyPathLayout
来实现您的需求。
from mylinearlayout.
Related Issues (20)
- uicollectview均分的问题 HOT 3
- MyFloatLayout Orientation 传递是Horz,实际的布局方向是垂直方向 HOT 1
- 设置视图的widthSize.max后,再设置widthSize.max(MyLayoutSize.empty); 导致崩溃 HOT 4
- 请问swift版本啥时候更新?还有能否做成像类似swiftui那样dsl布局形式? HOT 1
- 相对布局下, fetchLayoutSizeClass: 的一个visibility问题
- 目前 layout 中含有 selected 属性; 建议再增加一个 highlighted 属性;(有的时候需要通过监听点击事件,设置子视图的状态)
- 希望在栅格布局的中,可以通过对子视图的visibility,以实现动态布局;
- 使用MJRefresh刷新列表,结束刷新状态,UICollectionView动态计算高度有问题 HOT 2
- 使用Masonry布局问题 HOT 8
- MyFlexLayout 嵌套 MyFlexLayout 时问题 HOT 1
- QMUIKit中的QMUIButton 使用MyLayoutSize.wrap无法自适应 HOT 1
- [崩溃] -[MyBaseLayout myValidMargin:subview:calcPos:selfLayoutSize:] HOT 2
- 希望MyRelativeLayout添加对子视图未设置布局时的 frame 的支持
- Demo中朋友圈布局抖动问题 HOT 2
- 对动画设置为0秒,completion不执行的问题 HOT 2
- 框架升级后界面无法显示 HOT 2
- 这个库还在维护吗? HOT 5
- 项目还会维护? HOT 1
- 咨询MyFlexLayout在Cell动态高度中的用法 HOT 2
- MyLinearLayout 可以在swift项目中使用吗?我看swift版本已经很久都没有维护了 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mylinearlayout.