ForgetSou | Blog

❤ 武统台湾 刻不容缓 ❤

0%

NSToolBar

1 简述

工具栏,用于管理窗口标题栏下方和应用程序的自定义内容上方的空间,以快速访问应用程序功能。

2 源码注解

@interface NSToolbar : NSObject

2.1 初始化创建

- (instancetype)initWithIdentifier:(NSToolbarIdentifier)identifier NS_DESIGNATED_INITIALIZER;
- (instancetype)init API_AVAILABLE(macos(10.13));

2.2 代理

@property (nullable, weak) id<NSToolbarDelegate> delegate;

@protocol NSToolbarDelegate <NSObject>

@optional
- (nullable NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSToolbarItemIdentifier)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag;
// 返回默认情况下在工具栏中显示的项目的有序列表。
- (NSArray<NSToolbarItemIdentifier> *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar;
// 按标识符返回所有允许项的列表。
- (NSArray<NSToolbarItemIdentifier> *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar;

@optional

- (NSArray<NSToolbarItemIdentifier> *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar;

- (void)toolbarWillAddItem:(NSNotification *)notification;

- (void)toolbarDidRemoveItem:(NSNotification *)notification;

2.3 属性

阅读全文 »

macOS-NSMenu

1 简述

管理应用菜单的对象,通常会在程序的主菜单栏,视图右键菜单,Dock菜单使用。

@interface NSMenu : NSObject <NSCopying, NSCoding, NSUserInterfaceItemIdentification, NSAccessibilityElement, NSAccessibility>

2 NSMenu源码注解

2.1 创建

- (instancetype)initWithTitle:(NSString *)title NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;

2.2 常用属性

// 菜单标题
@property (copy) NSString *title;
// 父菜单
@property (nullable, assign) NSMenu *supermenu;
// 当前菜单下的子菜单数组
@property (copy) NSArray<NSMenuItem *> *itemArray;
// item数量
@property (readonly) NSInteger numberOfItems;
// 是否自动启用项目
@property BOOL autoenablesItems;
// 菜单高度
@property (readonly) CGFloat menuBarHeight;
// 高亮的item
@property (nullable, readonly, strong) NSMenuItem *highlightedItem API_AVAILABLE(macos(10.5));
// 最小宽度
@property CGFloat minimumWidth API_AVAILABLE(macos(10.6));
@property (readonly) NSSize size API_AVAILABLE(macos(10.6));
// 确定上下文菜单插件是否可以附加到菜单(如果用作上下文菜单)。
@property (null_resettable, strong) NSFont *font API_AVAILABLE(macos(10.6));
// 确定菜单是否包含状态图像的列
@property BOOL showsStateColumn API_AVAILABLE(macos(10.5));

2.3 常用函数

阅读全文 »