如何在可可的 nstextfield 上设置字体和颜色?

Posted

技术标签:

【中文标题】如何在可可的 nstextfield 上设置字体和颜色?【英文标题】:How set font and color on nstextfield in cocoa? 【发布时间】:2015-01-02 11:57:18 【问题描述】:

我想在面板上设置字体并更改所选字体。我正在使用NSColorWell 打开并选择颜色。对于字体,我可以使用什么?如何在字体面板关闭时打开字体面板并执行操作?

目前我正在使用

'- (IBAction)Open_Font_Button:(id)sender

    NSFontManager *fontManager = [NSFontManager sharedFontManager];
    [fontManager setDelegate:self];
    [fontManager setTarget:self];
    [fontManager orderFrontFontPanel:self];


- (void)changeFont:(id)sender

    font = [sender convertFont:font];
    NSLog(@"%@", font);



'

但是在chnageFont 上,当我更改任何字体或其大小时,它会崩溃。

【问题讨论】:

是什么阻止你这样做? 你已经尝试过什么?你的诉讼有什么问题?什么不工作?你不能只说“我想要这个。谢谢。” 【参考方案1】:

我假设你有连接到 ColorWell 和 textField 的出口:

IBOutlet NSColorWell *colorWell;
IBOutlet NSTextField *textfield;

你应该设置一些关于 NSColorPanel 的东西:

[NSColor setIgnoresAlpha:NO];
[[NSColorPanel sharedColorPanel] setShowsAlpha:YES];

当您打开或关闭可能显示颜色面板的窗口时,您应该确保您没有留下任何颜色面板:

if ([NSColorPanel sharedColorPanelExists])

    [[NSColorPanel sharedColorPanel] close];

然后在你的颜色的IBAction方法中你可以得到颜色:

NSColor *color;
color = [colorWell color];

然后你可以设置字体和颜色:

[textField setFont:anNSFont *];
[textField setTextColor:color];

编辑:

我刚刚意识到您也在询问如何从字体面板获取新字体。

要从字体面板获取新字体,您的代码实际上应该可以正常工作,除非从未初始化过“字体”(旧字体)。如果 font 为 null,则 [sender convertFont:font] 将返回 null。

这打印空:

- (void)changeFont:(id)sender

    NSFont *font;

    font = [sender convertFont:font]; // Reset the font

    NSLog(@"%@", font);


这会打印一个字体:

- (void)changeFont:(id)sender

    NSFont *font = [NSFont fontWithName:@"Helvetica" size:12]; // Initialize the old font

    font = [sender convertFont:font]; // Reset the font

    NSLog(@"%@", font);


【讨论】:

以上是关于如何在可可的 nstextfield 上设置字体和颜色?的主要内容,如果未能解决你的问题,请参考以下文章

根据 Font/Size 改变 NSTextField 的高度

Cocoa NSTextField - 绑定和设置属性

更改为等宽数字字体后,Cocoa NSTextField 文本在视图中被截断

Mac OS X:删除标签中的文本(NSTextField)

NSTextField(标签)属性文本:选择

在 Cocoa Mac OSX 中设置 FirstResponder 的问题