【问题标题】:Making a grid view using PinLayout使用 PinLayout 制作网格视图
【发布时间】:2019-01-09 05:41:10
【问题描述】:

使用https://github.com/layoutBox/PinLayout

我正在尝试制作网格视图。 视图将包含任意数量的列和行。

行将根据超级视图的宽度和根据内容调整高度的大小来适应标签的内容,文本需要贴在视图的顶部,这意味着如果其中一个标签需要高度为 100 点,下一个只需要 50 点,它将在其自身下方有 50 点的空间。基本上,如果标签覆盖了整个高度,这将创建一个顶部元素而不是中心。在布局中,我使其具有 == 0 或更大的底部约束。

到目前为止,我得到的只是一个视图容器,其中所有行都位于原点 x=0 , y = 0

这些行是包含标签的视图,它们堆叠在容器视图中。

我将行放在 inview(容器/表)中,目前标签仍然使用布局约束设置(至少在我正确填充行之前)。

if let previousView = inView.subviews.last
        {
            inView.addSubview(rowView)
            rowView.pin.below(of: previousView).horizontally().bottom().wrapContent(WrapType.vertically).width(100%)
        }
        else
        {
            inView.addSubview(rowView)
            rowView.pin.all().wrapContent(WrapType.vertically).width(100%)
        } 

【问题讨论】:

    标签: ios swift gridview


    【解决方案1】:

    您应该仔细阅读 PinLayout 的文档。 请查看introduction example

    PinLayout 不使用自动布局约束,它是一个手动布局视图的框架。因此,您需要更新 UIView.layoutSubviews() 或 UIViewController.viewDidLayoutSubviews() 内的布局以处理容器大小的更改,包括设备旋转。您还需要处理支持多任务处理的应用程序的 UITraitCollection 更改。在上面的示例中,PinLayout 的命令位于 UIView 的 layoutSubviews() 方法中。

    【讨论】:

    • 我们一直在研究它并重新阅读文档,最终我们确实使视图正常工作。所以我们实际上已经修复了这个问题。 :)
    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多