gpt4 book ai didi

ios - 如何从头开始制作 UITextView?

转载 作者:搜寻专家 更新时间:2023-10-31 23:03:20 26 4
gpt4 key购买 nike

据我了解,Apple does not provide the source code for UIKit .为了回答another question ,不过,我正在尝试了解 UITextView 是如何工作的(或可以使其工作)。

我如何自己设置一个最小的 UITextView

我从documentation看到它继承自 UIScrollView 所以我假设我会从那里开始。

import UIKit
class MyUITextView: UIScrollView {

// ???
}

再次查看 TextView 文档,看起来我至少需要实现 init方法和 text属性(property)。 (我现在可以忽略所有的编辑方面和格式化属性。)

init 方法采用以下形式:

init(frame frame: CGRect, textContainer textContainer: NSTextContainer?)

所以我还需要一个 NSTextContainer 的属性.这TextKit组件与 NSTextStorage 一起工作和 NSLayoutManager所以我也需要在某个地方工作。我可以使用 text 属性设置 NSTextStorage,但我真的不知道 NSLayoutManager 将如何在这里交互。

以前有没有人(Apple 以外的人)这样做过?这是一个足够简单的问题,可以在这里回答吗?还是答案会很长?

更新:

这个问题显示了我最近的尝试:How to Initialize NSTextStorage with a String in Swift

最佳答案

这绝对是复杂的。我之前不得不重新实现 UILabel 的一个子集,这很棘手。我认为您应该考虑的第一件事是您对在哪个级别工作感兴趣。最基本的是,UITextView 负责操作位图图形上下文并将字符串转换为屏幕上的像素.这本身就是一个相当大的挑战,如果您想从头开始重新实现该功能,您将要忙一阵子。

在更高层次上,UITextView 可以做一些事情,比如将文本分成几行,显示不同的字体;更高,你有类似 UITextInput Protocol 的东西,它负责让用户输入和操作 TextView 的内容。

就实现细节而言,这些显然不可用。我们能得到的最接近的是 header dump ,这很有趣,但可能不会告诉我们太多。

在 iOS7 和 TextKit 之前,文本渲染实际上是由 WebKit 处理的,这意味着实现可能会因为经历了这种转变而更加困惑。

无论如何,有些事情可以为您指明正确的(或至少是)方向:

很抱歉,这个答案可能没有我预期的那么有用。基本上:这是一个非常大的问题;这可能是多个非常大的问题。

关于ios - 如何从头开始制作 UITextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30634555/

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