问题描述
我有一个我想要实现的特定设计,它对我来说似乎并不复杂,但我为实现它付出了很多努力。
首先设计如下:
所以,我有一个包含图片的项目的表格视图,然后是标题,然后是三个项目的集合,这些项目将是 ImageViews。
我尝试制作一个水平堆栈视图,并确实设法正确附加了我的项目,但在设计方面却出现了可怕的错误,因为我的图像视图一直在水平方向拉伸。我想这不可能不拉伸这些项目。
我还尝试将集合视图添加到表视图中,但发现这对于这种基本的事物来说非常复杂(我想应该是这样)。然后,我来了。
这是我的代码以及我遇到的问题:
INSERT INTO data_point_fact
SELECT s.ship_id,p.position_id FROM ais_data a
JOIN ship_dim s ON s.ship_name = a.ship_name
JOIN position_dim p ON p.lon = a.lon AND p.lat = a.lat AND p.tmstp = a.tmstp;
SELECT * FROM data_point_fact;
ship_id | position_id
---------+-------------
1 | 3
1 | 1
2 | 3
2 | 2
2 | 1
我被卡住了,这么小的事情已经太久了。猜猜我对自己不知道该怎么做感到有点不高兴。
解决方法
首先,如果它们是 3 张静态图片,那么最好将它们制作在内部设计中并将图片网址分别分配给它们的网点
第二,对于您当前的工作,您需要添加宽度约束(关于高度,当它是水平堆栈时,它们将适合所有堆栈高度),例如
(n-1)!
,
如果您最多有 5 个参与者,那么我建议您默认在水平堆栈视图中添加 2 个子视图:
- 具有宽度约束的空视图 >= 5(称之为
spaceview
) -
"60 % no"
UILabel 的固定宽度。
然后以编程方式insert image views with fixed width and aspect ratio 1:1 in horizontal stack view at index 0
。
这样,如果只有1-2个参与者,那么剩余的空间将被spaceview
占用,因为它的宽度将大于5。
如果参与者超过 5 人,那么更好的选择是在水平堆栈视图中使用带有 uilabel 的 collectionview。