macos – UILabel / NSTextView与CATextLayer

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

选项1:在iOS上使用UILabel,在Mac上使用NSTextView.

选项2:在两个平台上使用CATextLayers,作为一般策略的一部分,尽可能地对它们进行操作.

显然,选项2有一个很大的优势,即维护的代码更少.我的问题是 – 选项1是否具有我应该注意的任何优势?特别是,CATextLayer是否有UILabel和NSTextView没有的缺点?

编辑:这是一场比赛.用户从不输入文本 – 但游戏确实输出了一些,例如分数.

解决方法

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

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

对于记录,NSTextField可能是与UILabel最接近的等效AppKit类. NSTextView是一个更重量级的类,如果你想要完整的段落和更高级的排版,你通常只需要它.使NSTextField更轻的部分原因在于它们倾向于共享一个不可见的单个NSTextView(或其超类NSText)作为字段编辑器,这有助于文本输入.由于应用程序中只有一个文本字段可以同时具有焦点,因此它可以共享一个公共字段编辑器以帮助提高性能.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...