gpt4 book ai didi

macos - UILabel/NSTextView 与 CATextLayer

转载 作者:可可西里 更新时间:2023-11-01 03:06:47 25 4
gpt4 key购买 nike

我有一个 iOS 应用程序,我正在将其转换为 iOS/Mac 应用程序。在 iOS 版本中,我使用 UILabels 作为我的文本。显然,我不能在 Mac 上这样做。我可以看到两个选项:

选项 1:在 iOS 上使用 UILabels,在 Mac 上使用 NSTextView。

选项 2:在两个平台上使用 CATextLayers,作为在两个平台上尽可能多地工作的一般策略的一部分。

显然,选项 2 有一个很大的优势,那就是需要维护的代码更少。我的问题是——选项 1 是否有任何我应该知道的优点?特别是,CATextLayer 是否有 UILabel 和 NSTextView 没有的缺点?

编辑:这是一个游戏。用户从不输入文本——但游戏会输出一些文本,例如分数。

最佳答案

这取决于您打算如何使用文本以及您正在编写的应用程序类型。如果文本主要是静态的并用作 UI 中的标签或对话框,那么 NSTextField 应该可以正常工作。如果你需要花哨的动画,那么 CATextLayer 可能更合适。如果您正在编写游戏(例如单人纸牌游戏),则 UI 会更加相似,并且使用 CATextLayer 和 CoreAnimation 会更有意义。如果您正在编写更通用的应用程序,如聊天客户端,用户与应用程序交互的界面和方式将大不相同,使用 NSTextFieldsNSTextViews 可能更有意义

同样,这完全取决于您正在创建的应用程序类型,但如果它是像聊天客户端示例这样的更传统的应用程序,那么我会认为使用 CATextLayer 并且必须创建所有内容以编程方式在界面中,而不是使用 NSTextField 并将内容放在 nib 文件中,这意味着要多写数百行代码。另一方面,如果应用程序更像单人纸牌游戏示例,并且层的维度和属性的定义方式考虑了应用程序运行的平台,那么您可能会节省大量代码.

郑重声明,NSTextField 可能是与 UILabel 最接近的等效 AppKit 类。 NSTextView 是一个更重量级的类,一般只在你想做完整的段落和更高级的排版时才需要。使 NSTextField 更轻量的部分原因是它们倾向于共享一个不可见的、单一的 NSTextView(或其父类(super class) NSText)作为字段编辑器,这有助于文本输入。由于应用中一次只能有一个文本字段获得焦点,因此它可以共享一个公共(public)字段编辑器以帮助提高性能。

关于macos - UILabel/NSTextView 与 CATextLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701895/

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