ios - 在 Xcode 界面构建器中创建动态调整大小的 UILabel

标签 ios swift xcode autolayout uilabel

我希望能够创建一个 UILabel,它将以比普通 AutoLayout 更复杂的方式调整其大小。我已经在互联网上寻找对此的答案,但无济于事。

这是我想要它做的。

假设您正在 iPhone 上查看它。我希望它与以中间为中心的任一边缘相距 16 点。 (高度与此无关)

但是,当屏幕变宽时,我希望 UILabel 拉伸(stretch),使其从每条边离开 16 个点,直到它达到,比如说,500 宽度。一旦它达到 500 宽度,我不希望它变得更宽。这是两侧增加 16 个点的地方,仍然保持标签在中心。

现在您正在 iPad 上横向查看它。 UILabel 恰好有 500 点宽并且位于中心。

如果可能,我希望能够使用 AutoLayout 而不是代码来完成此操作,但如果代码是必须的,我可以处理它。

感谢您的考虑。感谢所有帮助。

最佳答案

你可以用 3 个约束来做到这一点:

  1. 标签在 View 中水平居中
  2. 设置 <= 500 的宽度限制
  3. 将前导空格限制设置为 16。将其设置为 < 1000 的优先级。

当 View 很宽时(比如在 iPad 上),标签将拉伸(stretch)到其整个宽度 500 . Auto Layout 将使标签保持居中,并且它会通过使前导空间尽可能接近 16 来尽力满足第三个约束条件。尽可能。它选择打破这个约束,因为优先级小于 1000 .

当 View 较窄时(如在 iPhone 上),标签的前导空格为 16 (以及 16 的尾随空格,因为标签居中)。宽度将是剩下的任何宽度,因为它满足 width <= 500约束条件。

关于ios - 在 Xcode 界面构建器中创建动态调整大小的 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557236/

相关文章:

swift - 在 SpriteKit 中向场景添加模糊会导致图像大小出现问题

ios - 未知错误 -1=ffffffffffffffff 命令/bin/sh 在 Jenkins 中失败,退出代码为 1

swift - 使用带绑定(bind)的 ForEach 循环会导致数组缩小时索引超出范围(SwiftUI)

swift - Deinit 调用了两次

xcode - Swift 代码改进

ios - 导航 Controller 推送 View Controller

ios - 如何检测系统范围的定位服务变化

objective-c - 从另一个 ViewController 隐藏栏按钮(左右)?

ios - 在 iOS 的 FCM 推送通知上启用默认声音

ios - Alamofire 构建失败 : issues in Manager. swift、Request.swift 和 ResponseSerialization.swift