我试图创建一个水平轴UIStackView
,有两个视图,一个标签和一个图像,看起来像这样:
- 蓝色是标签
- 形象就是形象
UIStackView
的帧是绿色部分+蓝色部分+图像
我想要达到的是
我想达到的目标:
- 文本需要与stackview底部对齐
- 文本可以是1行或更多行
- 可能有一个图像,在这种情况下,它的尺寸将固定在120x120
- 如果标签超出图像的高度,图像将保持底部对齐
- 可能存在也可能不存在图像,在这种情况下,标签应该采用stackview的全宽度
UIStackView
需要动态增长,具体取决于标签和图像哪个更高
这是我在故事板中的设置:
限制如下:
我正在努力解决的边缘情况是,当我有一个相当长的文本需要 Package 时,它会缩小图像,看起来像这样:
我知道解决这个问题的一种方法是将图像约束从lessThanEqual
更改为Equal
,但是当我这样做时,当图像为nil时,分配给imageview的空间不会被删除,并防止标签占用堆栈视图的整个宽度
我怎么能以这样一种方式创建约束
1.当有图像时,确保图像为128x128
1.当图像存在时,标签不会缩小图像
1.如果将图像设置为nil,则标签可以采用stackview的全宽度
1条答案
按热度按时间ubbxdtey1#
好吧,相当长的帖子……
实际上,我不确定你是否可以只在约束的帮助下实现这一点,但也许你可以这样做:
所以当你设置一个图像,ex。从url,并将发生image为nil,imageView将隐藏自身,标签将采用StackView的完整大小。或者,您可以避免为imageView创建自定义类,而只需在本地添加该逻辑即可。此外,如果您需要图像始终为128x128,并且不将大小调整为更小的标签尺寸(如1、2或3行高度),则可以使用strong equal约束,而不是lessThanOrEqualtype。
编辑:
如果更改不适用于堆栈视图布局,您还可以用途:
或
抱歉,忘了提这个。