自动布局能否在视图变得过小时隐藏视图?

7
我有三个视图(A,B,C)水平排列。A具有固定宽度,B具有最大宽度,C具有最小宽度并将填充所有剩余空间到屏幕宽度。
B是一个图像,其比例保持不变地缩放。
在大屏幕上,B达到其最大尺寸,并且看起来很棒。在非常小的屏幕上,B完全消失了,这很好。但是,在这两者之间,我们有时会看到B出现为非常小的图像-只有几个像素宽,太小而无法辨认。
如何说:“如果B小于20个像素宽,则完全隐藏它”?
(我必须支持iOS 7,因此我更喜欢不使用UIStackView的解决方案。)

你不能只是检查B的宽度并隐藏B.hidden = true吗? - idocode
1
如果可能的话,我宁愿使用纯Autolayout约束来完成它。 - teedyay
1
如果你想让B在小屏幕上消失。那么在wCompact和hRegular中,将B的宽度改为零。 - Irfan
@teedyay,仅使用自动布局约束无法完成此操作。你可以像Irfan建议的那样使用尺寸类,或者你必须检查宽度并隐藏视图。 - idocode
3个回答

1
您可以通过对约束条件设置优先级来实现此操作。当它们无法满足视图时,使它们中断,并且还需要一个宽度为零且具有“最低优先级”的约束条件。

0

不,仅靠自动布局无法隐藏视图,如果其宽度小于阈值。 如评论中所述,您必须处理此类依赖项,检查宽度并有条件地隐藏它。


1
你能详细说明一下吗?我不知道在哪里编写代码来检查宽度。 - teedyay

0

使用自动布局,您应该定义一个适用于所有情况的布局,即可适应性。 因此,没有“如果宽度小于...那么做...”,当我们使用字符串和sprouts时,我们会使用它,但今天不再使用。 对于您面临的特定场景,我会在“B”上设置一个约束,使其不小于20。或者让“a”和“c”更宽,这样“B”就会消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接