如何在 Swift 中屏蔽 UIStackView?

Posted

技术标签:

【中文标题】如何在 Swift 中屏蔽 UIStackView?【英文标题】:How to mask a UIStackView in Swift? 【发布时间】:2020-07-15 03:32:29 【问题描述】:

我了解 UIStackView 的呈现方式与其他视图组件的呈现方式不同,因此它们无法被屏蔽。尽管如此,我相信还是有解决办法的。

有什么方法可以屏蔽 UIStackView 吗?特别是具有其他 UIStackViews 作为子视图的堆栈视图。

【问题讨论】:

也许您可以单独屏蔽所有子视图(前提是它们不是堆栈视图)。但是,我不确定您是否可以创建一个掩码并将其重用于所有子视图 根据您的目标,您可以为堆栈视图创建一个容器视图 (Uiview)。然后你可以添加背景颜色、边框等。 @valosip 我没有屏蔽堆栈视图来添加颜色、边框。等等。我出于其他原因(例如动画)屏蔽了堆栈视图。 您要添加什么动画或它的子视图堆栈视图? 当用户点击按钮时,菜单会从其下方滑出,反之亦然。如果我能让面具正常工作,这个动画将是儿童游戏。 【参考方案1】:

你不能,我相信。虽然它是UIView 的子类,但您甚至不能为其设置backgroundColor。苹果说:

UIStackView 是 UIView 的非渲染子类;也就是说,它不提供任何自己的用户界面。相反,它只管理其排列视图的位置和大小。因此,某些属性(如 backgroundColor)对堆栈视图没有影响。同样,您不能覆盖 layerClass、draw(:) 或 draw(:in:)。

https://developer.apple.com/documentation/uikit/uistackview

【讨论】:

以上是关于如何在 Swift 中屏蔽 UIStackView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIStackView 中切换排列子视图的可见性,这在 tableViewCell swift3 中

如何在 UIStackView 中隐藏滚动条?

Swift 如何将 UIStackView 放置在 ImageView 的特定角落

如何根据内容动态制作 Swift UIStackView 大小?

StackView 高度 Swift

使用swift在UiStackview中设置UiLabel的高度