使用PinLayout制作网格视图

时间:2018-08-01 15:15:08

标签: ios swift gridview

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

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

根据超级视图的宽度并根据内容调整高度,行的大小将适合标签的内容,文本将需要粘贴在视图顶部,这意味着如果其中一个标签需要高度为100点,而下一个高度只需为50点,则其下方的空间为50点。基本上,如果标签覆盖整个高度,这将产生顶部食物而不是中心食物。在布局中,我将其底部约束设为== 0或更大。

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

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

我将行放置在视图中(容器/表),暂时仍使用布局约束设置标签(至少直到我使行完全填充为止)。

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%)
        } 

1 个答案:

答案 0 :(得分:0)

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

  

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