跳到主要内容

TouchBar

类:TouchBar

为原生 macOS 应用创建 TouchBar 布局

进程:主进程

new TouchBar(options)

  • options 对象
    • items ([TouchBarButton](/docs/latest/api/touch-bar-button) | [TouchBarColorPicker](/docs/latest/api/touch-bar-color-picker) | [TouchBarGroup](/docs/latest/api/touch-bar-group) | [TouchBarLabel](/docs/latest/api/touch-bar-label) | [TouchBarPopover](/docs/latest/api/touch-bar-popover) | [TouchBarScrubber](/docs/latest/api/touch-bar-scrubber) | [TouchBarSegmentedControl](/docs/latest/api/touch-bar-segmented-control) | [TouchBarSlider](/docs/latest/api/touch-bar-slider) | [TouchBarSpacer](/docs/latest/api/touch-bar-spacer))[] (可选)
    • escapeItem ([TouchBarButton](/docs/latest/api/touch-bar-button) | [TouchBarColorPicker](/docs/latest/api/touch-bar-color-picker) | [TouchBarGroup](/docs/latest/api/touch-bar-group) | [TouchBarLabel](/docs/latest/api/touch-bar-label) | [TouchBarPopover](/docs/latest/api/touch-bar-popover) | [TouchBarScrubber](/docs/latest/api/touch-bar-scrubber) | [TouchBarSegmentedControl](/docs/latest/api/touch-bar-segmented-control) | [TouchBarSlider](/docs/latest/api/touch-bar-slider) | [TouchBarSpacer](/docs/latest/api/touch-bar-spacer) | null) (可选)

使用指定的项目创建新的 TouchBar。使用 BrowserWindow.setTouchBar 将此 TouchBar 添加到窗口。

注意:TouchBar API 目前处于实验阶段,未来 Electron 版本可能会更改或移除。

提示:如果你没有带 Touch Bar 的 MacBook,可以使用 Touch Bar Simulator 在你的应用中测试 Touch Bar 的使用情况。

静态属性

TouchBarButton

指向 TouchBarButton 类的 [`typeof TouchBarButton`](/docs/latest/api/touch-bar-button) 引用。

TouchBarColorPicker

指向 TouchBarColorPicker 类的 [`typeof TouchBarColorPicker`](/docs/latest/api/touch-bar-color-picker) 引用。

TouchBarGroup

指向 TouchBarGroup 类的 [`typeof TouchBarGroup`](/docs/latest/api/touch-bar-group) 引用。

TouchBarLabel

指向 TouchBarLabel 类的 [`typeof TouchBarLabel`](/docs/latest/api/touch-bar-label) 引用。

TouchBarPopover

指向 TouchBarPopover 类的 [`typeof TouchBarPopover`](/docs/latest/api/touch-bar-popover) 引用。

TouchBarScrubber

指向 TouchBarScrubber 类的 [`typeof TouchBarScrubber`](/docs/latest/api/touch-bar-scrubber) 引用。

TouchBarSegmentedControl

指向 TouchBarSegmentedControl 类的 [`typeof TouchBarSegmentedControl`](/docs/latest/api/touch-bar-segmented-control) 引用。

TouchBarSlider

指向 TouchBarSlider 类的 [`typeof TouchBarSlider`](/docs/latest/api/touch-bar-slider) 引用。

TouchBarSpacer

指向 TouchBarSpacer 类的 [`typeof TouchBarSpacer`](/docs/latest/api/touch-bar-spacer) 引用。

TouchBarOtherItemsProxy

指向 TouchBarOtherItemsProxy 类的 [`typeof TouchBarOtherItemsProxy`](/docs/latest/api/touch-bar-other-items-proxy) 引用。

实例属性

以下属性可用于 TouchBar 的实例

touchBar.escapeItem

当设置时,将替换触控栏上“esc”按钮的 TouchBarItem。设置为 null 将恢复默认的“esc”按钮。更改此值会立即更新触控栏中的 escape 项目。

示例

以下是一个简单的老虎机触控栏游戏示例,带有一个按钮和一些标签。

const { app, BrowserWindow, TouchBar } = require('electron')

const { TouchBarLabel, TouchBarButton, TouchBarSpacer } = TouchBar

let spinning = false

// Reel labels
const reel1 = new TouchBarLabel({ label: '' })
const reel2 = new TouchBarLabel({ label: '' })
const reel3 = new TouchBarLabel({ label: '' })

// Spin result label
const result = new TouchBarLabel({ label: '' })

// Spin button
const spin = new TouchBarButton({
label: '🎰 Spin',
backgroundColor: '#7851A9',
click: () => {
// Ignore clicks if already spinning
if (spinning) {
return
}

spinning = true
result.label = ''

let timeout = 10
const spinLength = 4 * 1000 // 4 seconds
const startTime = Date.now()

const spinReels = () => {
updateReels()

if ((Date.now() - startTime) >= spinLength) {
finishSpin()
} else {
// Slow down a bit on each spin
timeout *= 1.1
setTimeout(spinReels, timeout)
}
}

spinReels()
}
})

const getRandomValue = () => {
const values = ['🍒', '💎', '7️⃣', '🍊', '🔔', '⭐', '🍇', '🍀']
return values[Math.floor(Math.random() * values.length)]
}

const updateReels = () => {
reel1.label = getRandomValue()
reel2.label = getRandomValue()
reel3.label = getRandomValue()
}

const finishSpin = () => {
const uniqueValues = new Set([reel1.label, reel2.label, reel3.label]).size
if (uniqueValues === 1) {
// All 3 values are the same
result.label = '💰 Jackpot!'
result.textColor = '#FDFF00'
} else if (uniqueValues === 2) {
// 2 values are the same
result.label = '😍 Winner!'
result.textColor = '#FDFF00'
} else {
// No values are the same
result.label = '🙁 Spin Again'
result.textColor = null
}
spinning = false
}

const touchBar = new TouchBar({
items: [
spin,
new TouchBarSpacer({ size: 'large' }),
reel1,
new TouchBarSpacer({ size: 'small' }),
reel2,
new TouchBarSpacer({ size: 'small' }),
reel3,
new TouchBarSpacer({ size: 'large' }),
result
]
})

let window

app.whenReady().then(() => {
window = new BrowserWindow({
frame: false,
titleBarStyle: 'hiddenInset',
width: 200,
height: 200,
backgroundColor: '#000'
})
window.loadURL('about:blank')
window.setTouchBar(touchBar)
})

运行上述示例

要运行上述示例,你需要(假设你已经在想要运行示例的目录中打开了终端)

  1. 将上述文件保存到你的电脑上,命名为 touchbar.js
  2. 通过 npm install electron 安装 Electron
  3. 在 Electron 中运行示例:./node_modules/.bin/electron touchbar.js

然后,你应该会看到一个新的 Electron 窗口,以及在你的触控栏(或触控栏模拟器)中运行的应用。