macOS NSTabViewController 居中选项卡图标
macOS NSTabViewController centered tab icons
我有一个我创建的 macOS 应用程序。我有一个首选项 window 使用 swift 和故事板构建,带有样式为 NSTabViewController 的无表工具栏。
不过我看不出有什么方法可以覆盖选项卡图标的位置 - 它们默认位于 window 的左侧。
可能吗?
子类 NSTabViewController
并覆盖 func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier]
。在两侧添加一个 flexibleSpace
工具栏项。
根据 Willeke 的提示,我在我的 NSTabViewController
子类中想出了这个覆盖:
override func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
super.toolbarDefaultItemIdentifiers(toolbar)
var arr = Array<NSToolbarItem.Identifier>()
for item in self.tabViewItems {
if let identifier = item.identifier {
arr.append(NSToolbarItem.Identifier.init(identifier as! String))
}
}
//insert flexible spaces at first and last index
arr.insert(NSToolbarItem.Identifier.flexibleSpace, at: 0)
arr.append(NSToolbarItem.Identifier.flexibleSpace)
return arr
}
OC:
-(NSArray<NSToolbarItemIdentifier> *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar{
NSMutableArray *arr = [[super toolbarDefaultItemIdentifiers:toolbar] mutableCopy];
[arr insertObject:[[NSToolbarItem alloc] initWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier].itemIdentifier atIndex:0];
[arr addObject:[[NSToolbarItem alloc] initWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier].itemIdentifier];
return arr;
}
Swift:
override func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
var array = super.toolbarDefaultItemIdentifiers(toolbar)
array.insert(NSToolbarItem.Identifier.flexibleSpace, at: 0)
array.append(NSToolbarItem.Identifier.flexibleSpace)
return array
}
我有一个我创建的 macOS 应用程序。我有一个首选项 window 使用 swift 和故事板构建,带有样式为 NSTabViewController 的无表工具栏。
不过我看不出有什么方法可以覆盖选项卡图标的位置 - 它们默认位于 window 的左侧。 可能吗?
子类 NSTabViewController
并覆盖 func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier]
。在两侧添加一个 flexibleSpace
工具栏项。
根据 Willeke 的提示,我在我的 NSTabViewController
子类中想出了这个覆盖:
override func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
super.toolbarDefaultItemIdentifiers(toolbar)
var arr = Array<NSToolbarItem.Identifier>()
for item in self.tabViewItems {
if let identifier = item.identifier {
arr.append(NSToolbarItem.Identifier.init(identifier as! String))
}
}
//insert flexible spaces at first and last index
arr.insert(NSToolbarItem.Identifier.flexibleSpace, at: 0)
arr.append(NSToolbarItem.Identifier.flexibleSpace)
return arr
}
OC:
-(NSArray<NSToolbarItemIdentifier> *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar{
NSMutableArray *arr = [[super toolbarDefaultItemIdentifiers:toolbar] mutableCopy];
[arr insertObject:[[NSToolbarItem alloc] initWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier].itemIdentifier atIndex:0];
[arr addObject:[[NSToolbarItem alloc] initWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier].itemIdentifier];
return arr;
}
Swift:
override func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
var array = super.toolbarDefaultItemIdentifiers(toolbar)
array.insert(NSToolbarItem.Identifier.flexibleSpace, at: 0)
array.append(NSToolbarItem.Identifier.flexibleSpace)
return array
}