如何在macOS中制作标签

开发应用程序时常见的UI元素是标签。 在iOS和tvOS中,此元素称为UILabel 。 可能令您感到奇怪的一件事是macOS没有这样的对手。 相反,我们需要使用文本字段,更具体地说是NSTextField

为了保持传统,我们将两个平台的标签实现简单地比较两个世界。

这里没有什么特别的,我们创建标签,给它一个框架,分配一些虚拟文本,将白色设置为背景色,然后告诉标签调整大小以适合内容。 在生产应用中,通常不调用sizeToFit,除非在手动计算元素大小时需要标签的确切帧大小。 我通常会坚持大多数UI实现的约束。

关于iOS / tvOS的知识已经足够多了,让我们开始讨论一下如何在macOS上完成此工作。

我们首先创建一个NSTextField并设置一个框架。 接下来的事情是将文本添加到我们的标签中, NSTextField不提供类似于UILabel的文本属性。 相反,我们需要将stringValue设置为文本字段; 这与NSTextField的继承有关。 它继承自NSControlNSControl具有与值相关的一堆属性,例如doubleValuefloatValueintValue等。在处理从NSControl继承的其他类时,要牢记这一点。 如果要从NSTextField中提取文本值,则可以使用相同的属性来实现。

接下来是设置背景色,如果您还记得有关将背景色应用于NSView的文章 ,您会注意到这与该实现有所不同。 NSTextField具有采用NSColorbackgroundColor属性。 分层方法不适用于NSTextField

告诉标签为sizeToFit足以使标签显示在屏幕上,但这不会给我们想要的输出。 您会注意到我们在文本字段周围有一个边框,要摆脱它,我们只需将isBezeled属性设置为false和voila 。 现在看起来像是预期的,但是我们需要做的最后一件事是使它充当标签而不是文本字段,并且将isEditable设置为false。

就是这样,我们已经在macOS上创建了与UILabel等效的东西。