Thanks Ken, that works fine. Eyebrows a little bit raised that this is needed, 
but then segmented controls are horrible to deal with in any case.


—Graham



> On 10 Nov 2015, at 3:35 PM, Ken Thomases <k...@codeweavers.com> wrote:
> 
> On Nov 9, 2015, at 9:36 PM, Graham Cox <graham....@bigpond.com> wrote:
>> 
>> I’m struggling to get the behaviour I want from NSSegmentedControl.
>> 
>> I want each segment to have the same width, which is the overall width of 
>> the control divided into equal parts. When the overall control is resized, 
>> the segment sizes should change, but remain equal to each other and fill the 
>> available width.
>> 
>> Currently, I can either set the segments to have ‘automatic’ width, which 
>> sets them to be just enough to fit their icon, or ‘fixed’ width which is 
>> maintained, but in both cases the control size remains fixed and never 
>> visually resizes with the enclosing view. Unless the enclosing view is just 
>> right, the control is either too narrow, or too wide and clipped off. I have 
>> no idea in what universe this behaviour is supposed to be useful.
>> 
>> Is there a way to set it up so it works how I want?
> 
> I don't believe so, no.  I'd suggest that you create a custom subclass of 
> NSSegmentedControl.  Override -setFrameSize: and have it set the sizes of the 
> segments.  I'd compare the current frame width to the sum of the segment 
> widths.  I expect there will be a constant extra amount for the border, etc.  
> So, subtract that constant value from the new frame width, divide by 3, and 
> use that for the new width of the segments.
> 
> Regards,
> Ken
> 


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to