如何让 UIView 在 iOS 中“包装内容”?

Posted

技术标签:

【中文标题】如何让 UIView 在 iOS 中“包装内容”?【英文标题】:How to get a UIView to "Wrap Content" in iOS? 【发布时间】:2020-06-30 09:57:56 【问题描述】:

首先,值得注意的是我使用的是 Xamarin。我熟悉 Swift,所以我很高兴使用 swift 代码给出任何答案。更重要的是,我所有的视图都是使用约束以编程方式构建的,没有故事板或 Xib,因为我发现在 Xamarin 中使用它们有点痛苦。

我正在寻找与 android 中的“wrap_content”非常相似的东西。基本上,我有一个包含 2 个子视图的视图。这些视图是并排的,并一起占据了屏幕的整个宽度。第一个视图是固定高度,第二个视图具有可变高度,可以增加或减少以大于和小于第一个视图的固定高度。

最终,我希望最小的视图在父视图中垂直居中。

在 android 中这很容易,我只需包装内容,将重心设置为中心,并以编程方式相应地调整子视图的大小。然后,Android 会相应地调整父视图的大小。然而,在 ios 中,我发现这是一个真正的挑战。

同样,如果有任何材料可以帮助如何在 iOS 中实现包装内容,这将同样有益,因为我似乎每隔一天就会遇到类似的问题。

【问题讨论】:

你想要的不是UIStackView吗? (developer.apple.com/documentation/uikit/uistackview - 据我了解,第一个示例显示了您的预期行为)。我不确定它是否在 Xamarin 中可用。 好像是:docs.microsoft.com/en-us/dotnet/api/… @Losiowaty 这正是我所需要的。我希望我一个月前了解这个观点,会为我节省很多工作。随意回答并获得荣誉。 【参考方案1】:

正如 cmets 中所讨论的 - 可以使用 UIStackView 来实现此目的。 需要配置axis = .horizontalalignment = .center才能实现问题中描述的配置。

文档: 苹果:UIStackView(第一张图片实际上显示了问题中描述的布局,只是有超过 2 个子视图)。 Xamarin:Xamarin UIStackView

【讨论】:

UIStackView的链接失效了,可以重新链接吗?

以上是关于如何让 UIView 在 iOS 中“包装内容”?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 UIView / Menu 滑入和滑出? (使用 C# 而不是 Swift 的 Xamarin IOS)

如何淡化 UIView 背景颜色 - iOS 5

如何在 ios7 中将 UIView 对象添加到 self.view.window?

iOS:如何将 UIView 的自绘内容转换为图像(普遍的通用解决方案返回空白图像)?

如何使堆栈视图或容器视图包装内容?

iOS自动布局两个UIView具有相等的宽度