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 行。

更新:不要将GridControlGridLayout 混淆,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中的所有应用程序都以“网格图标”布局出现,我该如何实现这种布局?

安卓网格布局如何用java代码实现跨多行跨多列

如何在 iOS 中进行网格布局?

QT布局管理器 Layout,如何实现窗口最大化时,控件也随着变大。

Android 如何实现基于箭头的布局?

异构网格布局