NSToolbar可以使用「使用小尺寸」菜單項由用戶控制兩種大小。常規工具欄大小需要每個項目的32x32圖標大小,而小尺寸使用24x24。我不希望圖標按默認的比例縮放,因爲每個工具欄大小都有一對圖標。相反,我希望圖標在用戶更改工具欄大小時自動切換到其他大小。更改用於不同工具欄大小的NSToolbar圖標
現在IB對於每個工具欄項目只有一個圖像字段。有沒有辦法自動更改圖標的大小,或者我必須繼承NSToolbar,並手動對尺寸變化作出反應,並修復每個項目的圖標?
NSToolbar可以使用「使用小尺寸」菜單項由用戶控制兩種大小。常規工具欄大小需要每個項目的32x32圖標大小,而小尺寸使用24x24。我不希望圖標按默認的比例縮放,因爲每個工具欄大小都有一對圖標。相反,我希望圖標在用戶更改工具欄大小時自動切換到其他大小。更改用於不同工具欄大小的NSToolbar圖標
現在IB對於每個工具欄項目只有一個圖像字段。有沒有辦法自動更改圖標的大小,或者我必須繼承NSToolbar,並手動對尺寸變化作出反應,並修復每個項目的圖標?
錯誤的方法來解決這個問題。在更改工具欄大小之前和/或之後,NSToolbar不提供任何與工具欄交互的方式。
也許,你能解決的問題繼承了NSToolbarItem和覆蓋方法:
- (void)setMinSize:(NSSize)size
像下面這樣的東西應該是罰款您的問題。
- (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];
}
簡單的檢查,如果新的大小小(< 32.0)。如果是這種情況,則根據提供的標識符爲每個NSToolbarItem設置一個新圖像。
從Apple指南工具欄:
你應該提供具體到默認情況下,支持多種圖像表示如ICNS或TIFF一個單一的形象經常和小尺寸模式圖像表示。爲工具欄的當前sizeMode自動顯示適當的圖像表示。如果適當的表示不可用,則工具欄會將表示縮放爲適合當前模式的大小,但性能和外觀會降低成本。