如何让 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 = .horizontal
和alignment = .center
才能实现问题中描述的配置。
文档: 苹果:UIStackView(第一张图片实际上显示了问题中描述的布局,只是有超过 2 个子视图)。 Xamarin:Xamarin UIStackView
【讨论】:
UIStackView的链接失效了,可以重新链接吗?以上是关于如何让 UIView 在 iOS 中“包装内容”?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 UIView / Menu 滑入和滑出? (使用 C# 而不是 Swift 的 Xamarin IOS)
如何在 ios7 中将 UIView 对象添加到 self.view.window?