Reputation: 295
How can I do something like that?
I didn't find any appropriate object in the Interface Builder library.
Any thoughts?
Upvotes: 24
Views: 5868
Reputation: 724
The best way that i found is to use NSSegmentedControl.
after you dragged it on the canvas, you should configure its style:
Style: Small Square
Mode: Select Momentary
looks better. Now use "image" field to set NSAddTemplate and NSRemoveTemplate. Make sure that label field is empty.
Ok, we have "+", "-" and one empty segment. To prevent the latest one to be selected by the user, select it from Segment: pop up and turn off Enabled check box (located next to State: label).
And lastly, what we have to do is set width of first two segments to make them square.
Enjoy ;)
Upvotes: 40
Reputation: 22939
Update for OSX Yosemite
I tried to achieve the same look as Mail.app has in the Accounts view (right window on my screenshot).
I did achieve the desired result by following the steps below:
NSSegmentedControl
NSAddTemplate
for the +
buttonNSRemoveTemplate
for the -
buttonfixed
and set the value to 32
pixelsNSButton
with the style Gradient
.true
so that it is not clickable.Upvotes: 11
Reputation: 133059
One answer here suggests using gradient buttons, however these buttons cannot be disabled as this causes the background to change and thus breaks the look. Another one suggested using a segmented control, which is almost perfect but segmented controls don't support autoresizing, e.g. if the table width is dynamic. My suggestion is a combination of both. Use a segmented control for the actual buttons and a gradient button to fill the rest of the table width that now can also be dynamic if the button width is dynamic as well.
See my answer to a similar question (with screenshots): https://stackoverflow.com/a/22586314/15809
Upvotes: 3
Reputation: 1814
Use a NSButton with a gradient style, and for the images use the system provided NSAddTemplate and NSRemoveTemplate.
Upvotes: 8