NSToolbar 可以有两种尺寸,由用户使用“使用小尺寸”菜单项控制。常规工具栏大小要求每个项目使用 32x32 图标大小,而小尺寸使用 24x24。我不希望图标默认缩放,因为每个工具栏大小都有一对图标。相反,我希望图标在用户更改工具栏大小时自动切换到其他大小。
现在,IB 对于每个工具栏项只有一个图像字段。有没有办法自动更改图标大小,或者我是否必须继承 NSToolbar 并手动响应大小更改并修复每个项目的图标?
解决问题的方法是错误的。NSToolbar 在工具栏大小更改之前和/或之后不提供任何与工具栏交互的方式。
也许,您可以解决子类化 NSToolbarItem 并覆盖该方法的问题:
- (void)setMinSize:(NSSize)size
Run Code Online (Sandbox Code Playgroud)
像下面这样的东西应该可以解决您的问题。
- (void)setMinSize:(NSSize)size {
NSLog(@"setMinSize: %@", NSStringFromSize(size));
if(size.height < 32.0) { //if we're resizing to min_size than apply a new image based on the actualIdentifier
if([[self itemIdentifier] isEqual:@"effectsButton"]) {
[self setImage:[NSImage imageNamed:@"effectsButton24"]];
}
} else { //else switch back to the standard image
if([[self itemIdentifier] isEqual:@"effectsButton"]) {
[self setImage:[NSImage imageNamed:@"effectButton"]];
}
}
[super setMinSize:size];
}
Run Code Online (Sandbox Code Playgroud)
只需检查新尺寸是否较小(<32.0)。如果是这种情况,您可以根据提供的标识符为每个 NSToolbarItem 设置一个新图像。