如何解决强制NSStatusItem重绘
我创建一个NSStatusItem
并添加图片。添加图像后,更改image.template
属性对图标没有立即影响。仅在单击状态项后,图像才成为模板。有没有办法强制系统重新绘制状态项/栏?
我整理了一个简单的示例,按“测试”按钮将图像更改为模板,但是更改只有在选择状态图标后才会生效。
-(void)awakeFromNib{
// Setup status item
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
statusMenu = [[NSMenu alloc] initWithTitle:@""];
menuItem = [[NSMenuItem alloc] initWithTitle:@"test"
action:nil
keyEquivalent:@""];
NSImage* img = [NSImage imageNamed:@"aubergine.png"];
img.template = true;
img.size = NSMakeSize(18.0,18.0);
statusItem.button.image = img;
[statusItem setMenu:statusMenu];
[statusMenu addItem:menuItem];
// Add button to window
NSButton* button = [[NSButton alloc] initWithFrame:NSMakeRect(10,10,50,20)];
[[window contentView] addSubview: button];
[button setTitle: @"Test"];
[button setTarget:self];
[button setAction:@selector(buttonPressed)];
}
-(void)buttonPressed {
[[[statusItem button] image] setTemplate: false];
}
解决方法
如Willeke在评论中提供的那样,解决方案是使用inputView
属性。工作功能是:
needsDisplay
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。