The latest version includes the fix below. It also adds support for separators and replaces CTGradient with NSGradient.
For those who haven't figured it out yet:
You replace
result = ceilf([font widthOfString:[self title]]);
with
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
result = ceilf([[self title] sizeWithAttributes:attributes].width);
Hey Andreas,
Do you have any plans to update AMButtonBar? The calls to -[NSFont widthOfString:] are deprecated.
Great code effort. Note that "#import "NSBezierPath_AMShading.h" " needs to be commented out on line 22 of AMButtonBarCell.h as it does not exist. Thanks again, Derek Bolli, Sydney Australia.
Die aktuelle Version unterstützt weder Separator noch Overflow-Menüs. Da das Suchfeld unabhängig vom Buttonbar ist, kann man es einfach als Subview einfügen.
The current version does not support separators or overflow menus. Since a search field has no dependency on the button bar, you may simply add it as a subview.
hallo! vielen dank für die tolle ambuttonbar. ich frage mich nur ob es dazu auch eine doku gibt? wie setze ich zum beispiel einen separator, ein overflow pfeil oder ein suchfeld?
Thank you.
Yes, I always forget about the problems with moving views. :)
It's actually a bit more complicated, but I already solved this problem in my AMRollOverButton class. In -viewDidMoveToWindow I'm now registering for both, NSViewFrameDidChangeNotification and NSWindowDidResizeNotification.
That seems to work for me, no matter how the view is moved. I'll upload an updated archive soon.
Excellent code, congratulatios.
I'm using this for my app, and it's working nicely.
Allow me to make just one seggestion, in AMButtonBar.m add:
- (void)setFrame:(NSRect)frameRect
{
[self setNeedsLayout:YES];
[super setFrame:frameRect];
}
This will allow to update the trackingRectangles when the frame of the View is changed, such as when the ButtonBar is inside an NSSplitView and the user moves the splitter handle.
1) Bitte geben Sie möglichst Ihren echten Namen an. (Momentan gibt es keine Möglichkeit, einen festen Account anzulegen.)
2) Ihre Email-Adresse wird nie veröffentlicht werden. Die Angabe ermöglicht mir, Sie ggf. zu kontaktieren.
3) Die Adresse Ihrer Webseite wird zusammen mit Ihrem Namen veröffentlicht. Bitte kurz halten.
Ich behalte mir das Recht vor, Beiträge aus beliebigen Gründen zu löschen.
Also bitte keinen SPAM posten, beim Thema bleiben, nicht unverschämt werden, etc.