【问题标题】:Auto size UITextView for compatibility - Swift 3自动调整 UITextView 的大小以实现兼容性 - Swift 3
【发布时间】:2017-08-24 15:10:59
【问题描述】:

我正在构建一个应用程序,这似乎是一个简单的问题,但我无法终生解决它。

在屏幕上,我有大量文本,通过 UITextView 提供。我希望它基本上是静态的,没有滚动条。

如果我在设计视图中手动调整它的大小,并在 iPhone 7 上运行它,文本会非常合适。但是,如果我在 iPhone 5c 上运行它,由于屏幕尺寸,它太小了,然后自然地缩小它并添加滚动。

有没有一种方法可以让文本全部显示并相应地调整其大小,类似于SizeToFit() 命令?

【问题讨论】:

  • 使用UITextView.scrollEnabled = false
  • 通过代码:启用滚动,然后设置文本,然后读取 contentSize(然后根据它应用一些约束),然后禁用滚动?
  • 这不会禁用滚动吗?还是会自动调整 UITextView 输出的大小以适应尺寸?
  • 它将启用某种intrinsicContentSize。它将按照您的描述运行。

标签: swift xcode


【解决方案1】:

如果您不想要滚动行为,只需使用标签即可。

label.adjustsFontSizeToFitWidth = true
label.numberOfLines = 0

如果标签不够大,这将修复字体大小。

【讨论】:

    【解决方案2】:

    如果您不想滚动,为什么要使用文本字段而不是标签?无论哪种方式,您都可以使用UIDevice currentDevice model possible values 此处的答案来确定您正在使用的设备,然后您可以根据该信息设置字体大小。

    我建议创建一个函数来执行此计算,然后返回字体大小,这样您就可以在设置字体时调用它。

    【讨论】:

    • 如果我使用标签,它只停留在一行。我没有意识到标签上可以有段落?
    • 如果您设置标签行 = 0,它将调整高度以显示所有内容。您还需要确保您的约束允许它增长并且它没有精确的高度约束。
    【解决方案3】:

    为您的 UITextView 分配约束(屏幕截图中的小红线),然后它将正确适合所有尺寸

    就像@Orkhan Alikhanov 所说,使用 UITextView.scrollEnabled = false - 禁用文本视图内的滚动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多