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

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

行的大小将根据超级视图的宽度和标签内容的高度调整以适合标签的内容,文本将需要粘贴在视图的顶部,这意味着如果标签之一需要为100磅高而下一个只需要为50,则其下方的空间为50 pt。基本上,如果标签覆盖整个高度,这将产生顶部食物而不是中心食物。在布局中,我将其底部约束设为== 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%)
        }

最佳答案

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


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

关于ios - 使用PinLayout制作网格 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51636875/

10-13 04:00