Đây là what I use. Vượt qua một số NSView
và số nhận dạng bạn chọn cho chức năng controlStrippify()
. Nỗ lực của tôi trong việc thực hiện chính xác điều tương tự bằng cách sử dụng Swift đã dẫn đến sự cố, cổng chào mừng :). Cảm hứng từ https://github.com/a2/touch-baer.
@import Cocoa;
@import Foundation;
// See: https://github.com/a2/touch-baer
extern void DFRSystemModalShowsCloseBoxWhenFrontMost(BOOL);
extern void DFRElementSetControlStripPresenceForIdentifier(NSString *string, BOOL enabled);
@interface NSTouchBarItem()
+ (void)addSystemTrayItem:(NSTouchBarItem *)item;
@end
@interface NSTouchBar()
+ (void)presentSystemModalFunctionBar:(NSTouchBar *)touchBar systemTrayItemIdentifier:(NSString *)identifier;
@end
void controlStrippify(NSView *view, NSString *identifier) {
if (@available(macOS 10.12.2, *)) {
DFRSystemModalShowsCloseBoxWhenFrontMost(YES);
NSCustomTouchBarItem *touchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
touchBarItem.view = view;
[NSTouchBarItem addSystemTrayItem:touchBarItem];
DFRElementSetControlStripPresenceForIdentifier(identifier, YES);
} else {
// Fail!
}
}
Nguồn
2017-10-06 12:01:55
Từ tài liệu NSTouchBar: "Ở bên phải của thanh cảm ứng, hệ thống cung cấp dải điều khiển luôn có sẵn. Dải điều khiển cho phép người dùng truy cập điều khiển tiêu chuẩn cho độ sáng màn hình, âm lượng, Siri, Các thanh ứng dụng của bạn xuất hiện ở bên trái của Dải Điều khiển (Người dùng có thể chọn ẩn Dải Điều khiển, cung cấp ứng dụng phía trước toàn bộ chiều rộng của Thanh cảm ứng.) "Điều này ngụ ý rằng thanh ứng dụng của bạn luôn xuất hiện bên trái và các mục bên phải là không thể. Bạn thậm chí không thể truy cập các mục trên thanh Control Strip. – rocky