gpt4 book ai didi

ios - 为什么 sizeThatFits() 返回的尺寸太小?

转载 作者:行者123 更新时间:2023-11-28 15:54:40 26 4
gpt4 key购买 nike

我正在快速学习 cs193p,但我遇到了 UITextView.sizeThatFits(...) 的问题。它应该返回弹出 View 的推荐大小,以将 [int] 数组显示为文本。正如您在 Paul Hegarty 的示例 ( https://youtu.be/gjl2gc70YHM?t=1h43m17s ) 中看到的那样,他获得了没有滚动条的完美弹出窗口。我使用的代码与本讲座中的代码几乎相同,但我得到的是:

enter image description here

text 字符串等于 [100],但是 sizeThatFits() 方法返回的尺寸太小,无法很好地显示它,即使有足够的可用空间。在我添加了一些文本后它变得更好了,但仍然不精确并且带有滚动条:

enter image description here

这是设置大小的代码部分:

override var preferredContentSize: CGSize {
get {
if textView != nil && presentingViewController != nil {
// I've added these outputs so I can see the exact numbers to try to understand how this works
print("presentingViewController!.view.bounds.size = \(presentingViewController!.view.bounds.size)")
print("sizeThatFits = \(textView.sizeThatFits(presentingViewController!.view.bounds.size))")
return textView.sizeThatFits(presentingViewController!.view.bounds.size)
} else { return super.preferredContentSize }
}
set { super.preferredContentSize = newValue }
}

我应该怎么做才能像讲座中那样工作?

最佳答案

看起来标签与其父 View 之间有 16 pt 的边距。在返回弹出窗口的首选大小时,您需要考虑到这一点。

您应该尝试以下两种方法:

  • 将 32 添加到从 preferredContentSize

    返回的宽度
  • 在 Interface Builder 中,清除 UILabel 上的布局约束,然后重新添加顶部、底部、前导和尾部约束,并确保“Constrain to Margins”选项未被选中已启用。

最后,您可以在 View 准备好显示时简单地设置 preferredContentSize,而不是覆盖 preferredContentSize,并且您可以让自动布局选择最佳尺寸:

override func viewDidLayoutSubviews() {
self.preferredContentSize = self.view.systemLayoutSizeFitting(UILayoutFittingCompressedSize)
}

如果布局配置正确,systemLayoutSizeFitting(UILayoutFittingCompressedSize) 将返回 View 的最小尺寸,同时考虑所有边距和 subview 。

关于ios - 为什么 sizeThatFits() 返回的尺寸太小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41926545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com