MacOS 开发 - NSColorPanel & NSFontManager 选择颜色、字体

关键词:setSelectedFont,MacOS 开发,NSColorPanel,NSFontManager,sharedFontManager,orderFrontFontPanel,pointSize,fontName,sharedColorPanel,NSColorPanelMode


NSFontManager 选择字体

NSFontManager

创建和使用

1、创建全局变量,如果不作为变量和初始化,会调用失败。

@property (nonatomic,strong) NSFont *font;

2、初始化 NSFont 和 NSFontManager。

- (void)openFontPanel{
    //一定要初始化
    self.font = [NSFont systemFontOfSize:14];
    
    //不需要使用代理 NSFontManagerDelegate,代理也没有方法
    NSFontManager *fontManager = [NSFontManager sharedFontManager];
    [fontManager setTarget:self];
    [fontManager setAction:@selector(changeFont:)];
    [fontManager orderFrontFontPanel:self];
    
}

3、监听

- (void)changeFont:(id)sender {
    self.font = [sender convertFont:self.font];
    self.label.font = self.font;
    NSLog(@"pointSize:%f ,fontName : %@ , familyName : %@",self.font.pointSize,self.font.fontName,self.font.familyName);
}
  • pointSize 就是字体大小,fontName 是字体名

设置默认字体 setSelectedFont

如:每次打开选择时,字体大小都是 24
[fontManager setSelectedFont:[NSFont systemFontOfSize:24] isMultiple:NO];


从前认为选择颜色和选择日期一致,应该用名为 NSColorPicker 之类的控件,无奈网上资料很少,至今也没找到 NSColorPicker 的用法,偶然发现选择颜色应该用 NSColorPanel。
不过,知道 NSColorPicker、NSColorList怎么用的同学,欢迎告诉我~~


NSColorPanel 选择颜色

创建和调用

  • NSColorPanel 继承自 NSPanel,而 NSPanel 继承自 NSWindow,而非 NSView,所以无法用 addSubview 来添加 panel.
- (void)openColorPanel{

    NSColorPanel *colorpanel = [NSColorPanel sharedColorPanel];
    
    colorpanel.mode = NSColorPanelModeCrayon; //调出时,默认色盘
  
    [colorpanel setAction:@selector(changeColor:)];
    [colorpanel setTarget:self];
    [colorpanel orderFront:nil];
}

//颜色选择action事件
- (void)changeColor:(id)sender {
    NSColorPanel *colorPanel = sender ;
    NSColor *color = colorPanel.color;
    
    self.window.backgroundColor = color;
}

NSColorPanelMode

typedef NS_ENUM(NSInteger, NSColorPanelMode) {
    /* If the color panel is not displaying a mode, the NSColorPanelModeNone will be returned */
    NSColorPanelModeNone NS_ENUM_AVAILABLE_MAC(10_5) = -1,
    NSColorPanelModeGray            = 0,
    NSColorPanelModeRGB             = 1,
    NSColorPanelModeCMYK            = 2,
    NSColorPanelModeHSB             = 3,
    NSColorPanelModeCustomPalette   = 4,
    NSColorPanelModeColorList       = 5,
    NSColorPanelModeWheel           = 6,
    NSColorPanelModeCrayon          = 7
};

截取了几个有代表性的:

1、NSColorPanelModeCMYK
NSColorPanelModeCMYK


2、NSColorPanelModeCrayon
NSColorPanelModeCrayon


3、NSColorPanelModeCustomPalette
NSColorPanelModeCustomPalette


4、NSColorPanelModeGray
NSColorPanelModeGray


5、NSColorPanelModeRGB
NSColorPanelModeRGB


发布了41 篇原创文章 · 获赞 163 · 访问量 66万+

猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/78024879