ios - 为 UIStackView iOS 设置优先级

标签 ios swift xcode swift4.2

我怎样才能优先显示一个标签并显示另一个标签,但如果它太大,它应该在 UIStackview 中制作 ...

enter image description here

这是我的 StackView

enter image description here

最佳答案

这是一个符合您要求的示例:

enter image description here

首先,UIStackView 实际上会让事情变得更难,因为我们想要微调每个标签之间的距离。我只是使用前导和尾随约束将每个标签排成一行。

诀窍是为每个标签设置适当的内容压缩阻力优先级内容压缩优先级。首先,我们希望 0 始终匹配其内容的大小,因此我们将其内容抗压缩优先级设置为 1000。内容拥抱优先级可以保持默认值 250。

我还将 @ 符号拆分到它自己的标签中,因为我们总是希望它出现。将其内容压缩阻力优先级设置为 1000,并将内容拥抱优先级保持在 250。

接下来,对于 shrink_label,我们将内容压缩阻力优先级设置为 749,将内容拥抱优先级设置为 1000。也就是说,我们希望 shrink_label 永远不会尝试并且变得比其文本内容大小更大,我们希望它允许在需要时压缩其内容。

最后,对于laaabel,我们将content hugging 优先级设置为1000,将content compression resistance 优先级设置为750。也就是说,标签将占用尽可能多的空间,并且由于它抗压缩优先级比 shrink_label 高 1,shrink_label 将在 laaabel 之前压缩。

您可以在此处的 Apple 文档中阅读有关内容压缩和内容拥抱的内容:

https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/ViewswithIntrinsicContentSize.html

我的示例应用程序的完整源代码可在此处获得:

https://github.com/elliotfiske/StackOverflowContentHuggingExample

关于ios - 为 UIStackView iOS 设置优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583833/

相关文章:

ios - 如何为 UINavigationBar 的后退按钮创建投影?

objective-c - 将布局 anchor 与 UIStackView 一起使用时出错

swift - 'type: Undefined' 会默认为 AnyObject 吗?

iphone - 在 iPad 上播放声音,使用 AudioToolbox

iOS - 通过单例实现连接到服务器

ios - UICollectionview cell/imageview 不会全屏点击

objective-c - 从堆栈中永久移除 UIViewController

XCode 6 GM 占用磁盘空间和内存

iphone - 如何绘制带阴影但不旋转阴影的旋转 UIView

ios - 在 iOS Action Extension 中使用 SwiftUI 内容 View 而不是 Action ViewController 启动