2012-01-17 55 views
2

NSToolbar可以使用「使用小尺寸」菜單項由用戶控制兩種大小。常規工具欄大小需要每個項目的32x32圖標大小,而小尺寸使用24x24。我不希望圖標按默認的比例縮放,因爲每個工具欄大小都有一對圖標。相反,我希望圖標在用戶更改工具欄大小時自動切換到其他大小。更改用於不同工具欄大小的NSToolbar圖標

現在IB對於每個工具欄項目只有一個圖像字段。有沒有辦法自動更改圖標的大小,或者我必須繼承NSToolbar,並手動對尺寸變化作出反應,並修復每個項目的圖標?

回答

0

錯誤的方法來解決這個問題。在更改工具欄大小之前和/或之後,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設置一個新圖像。

2

從Apple指南工具欄:

你應該提供具體到默認情況下,支持多種圖像表示如ICNS或TIFF一個單一的形象經常和小尺寸模式圖像表示。爲工具欄的當前sizeMode自動顯示適當的圖像表示。如果適當的表示不可用,則工具欄會將表示縮放爲適合當前模式的大小,但性能和外觀會降低成本。