gpt4 book ai didi

objective-c - CTFramesetterSuggestFrameSizeWithConstraints返回超出约束的宽度吗?

转载 作者:行者123 更新时间:2023-12-03 13:13:13 26 4
gpt4 key购买 nike

在我的应用中,我需要根据其文本内容动态更改某些 View 的大小。首先,我使用-sizeWithFont进行字符串测量。我的应用程序中有很多工作要做,因此我将-sizeWithFont放在了后台,因为苹果的文档说:“在iOS 10.4和更高版本中,您可以从应用程序中的辅助线程使用该类扩展中描述的方法,而不仅仅是从主线程。但是,事实是,此方法将调用某些不是线程安全的WebCore函数,因此该应用程序将崩溃。该错误已提交,但仍未修复。 (对此有一些疑问,例如sizeWithFont in MultiThread Crash!)

由于由于性能原因我无法将测量结果放入主线程中,因此我尝试使用CoreText框架。我首先为我的字符串创建一个对应的NSAttributedString,然后使用一些CT函数进行测量。我知道在iOS 6中,有非常简单的API,例如-size可以完成这项工作,但是由于兼容性我不能使用它们。因此,我必须调用一些低级函数,例如CTFramesetterSuggestFrameSizeWithConstraints()CTFramesetterCreateFrame(),但我发现这些 CT方法有时不遵守我的约束例如,如果我为CGSize(200, CGFLOAT_MAX)设置了CTFramesetterSuggestFrameSizeWithConstraints(),这应该意味着宽度上有约束,但是实际上,它将返回一些较大的宽度,例如205。 CTFramesetterCreateFrame()也会发生相同的情况。如果我先调用它,然后再调用CTFrameGetLines(),则有时我得到的行数比应有的少,因为某些行的宽度超过200px,并且包含的​​单词数超过了应有的数量。

抱歉,很长的描述,这是我的问题:

  • 可能使用CT框架来衡量简单的字符串是一种浪费,因此
    有没有办法使-sizeWithFont可以在后台使用
    安全吗?
  • 如果CTFramesetterSuggestFrameSizeWithConstraints()的行为是设计使然,则为
    有什么方法可以使CT功能严格遵守我的约束?
    如果没有,我该如何测量固定宽度的琴弦,
    linebreakmode是自动换行吗?
  • 最佳答案

    使用CTFramesetterSuggestFrameSizeWithConstraints(),并在返回结果大小之前,尝试将result.width参数设置为约束大小中的宽度。

    关于objective-c - CTFramesetterSuggestFrameSizeWithConstraints返回超出约束的宽度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719272/

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