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



我想在面板上设置字体并更改所选字体。我正在使用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,当我更改任何字体或其大小时,它会崩溃。

我假设您已经连接了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"(旧字体)从未初始化过。如果字体为空,则 [sender convertFont:font] 将返回空。

这将打印空:

- (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);
}

相关内容

  • 没有找到相关文章

最新更新