ios如何实现网格布局
Posted
技术标签:
【中文标题】ios如何实现网格布局【英文标题】:How to implement Grid Layout for ios 【发布时间】:2017-07-17 10:40:19 【问题描述】:ios如何实现Grid布局?有类似的布局:<Grid>
in windows xaml
and <GridLayout>
in android,但我没有找到任何资源,涵盖如何在 ios 中实现类似的东西。
简而言之:应该有所谓的“网格”,在其中我指定有多少行和单元格,然后我可以指定某些特定控件(例如TextView
)应该从x
列开始并跨越w
列,从y
行开始,跨越h
行。
更新:不要将GridControl
与GridLayout
混淆,GridLayout
的示例:
【问题讨论】:
UICollectionVIew
【参考方案1】:
使用collectionviews编写网格布局
https://developer.apple.com/documentation/uikit/uicollectionview
【讨论】:
【参考方案2】:使用UICollectionView 进行网格布局。检查this 的答案,其中详细显示了UICollectionView
的集成
对于这样的布局,您也需要使用collectionView
本身,但要正确使用sizeForItemAtIndexPath
数据源。检查this 答案。也尝试自定义UICollectionViewFlowLayout
this 也是一个很棒的库,它也为你做同样的事情
【讨论】:
您在谈论 GridView,这是一个不同的控件。我没有找到任何允许单元格跨越多行和多列的示例。 @AccessDenied 为此,您还需要使用 collectionView 本身,但要正确使用sizeForItemAtIndexPath
数据源。检查这个答案:***.com/a/25275878/7456236 这个库也为你做同样的事情:github.com/betzerra/MosaicLayout
您的答案并非 100% 正确,mozaic 视图是另一回事。我在答案中添加了链接,这正是我需要的。
好的。无论如何,很高兴它帮助了你:)【参考方案3】:
借助以下博客文章,我能够实现 GridLayout: https://web.archive.org/web/20170620013903/http://blog.stablekernel.com/creating-a-custom-uicollectionviewlayout
简而言之,我必须实现自己的 UICollectionViewLayout,但我不需要文章中介绍的复杂性。
这个解决方案的问题是细胞重复使用,我不需要,也没有办法关闭它。
【讨论】:
@OlivierMATROT 我使用 C# 并且解决方案不是通用的,而是针对特定任务的。这段代码是我从一个早期的原型上抄来的,后来改进了,但是想法就是来源于它,大家可以看看gist.github.com/Mogikan/… @OlivierMATROT 文章要点:gist.github.com/smswz/393b2d6237b7837234015805c600ada2【参考方案4】:另一种选择是找出 xamarin 如何实现 GridLayout 并尝试重现它。 https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/GridCalc.cs
【讨论】:
【参考方案5】:实现它的另一种方法是从 UIView 继承并覆盖 LayoutSubviews 方法并手动设置子 Frame。
【讨论】:
以上是关于ios如何实现网格布局的主要内容,如果未能解决你的问题,请参考以下文章
iphone中的所有应用程序都以“网格图标”布局出现,我该如何实现这种布局?