Mac Catalyst Determine Default Size of NSToolbarItems When Creating them with UIBarButtonItems and SF Symbol Images?

Is there a way to programmatically determine the default size of an NSToolbarItem when creating them on Mac Catalyst like so:

 UIImage *downArrowImage = [UIImage systemImageNamed:@"arrow.down"]; 

UIBarButtonItem *goDownUIBarButtonItem = [[UIBarButtonItem alloc]initWithImage:downArrowImage style:UIBarButtonItemStylePlain target:nil action:@selector(navigateDownard:)];

 NSToolbarItem *nsToolbarItem = [NSToolbarItem itemWithItemIdentifier:itemIdentifier barButtonItem:goDownUIBarButtonItem];

Why am I asking? I need to create a toggle toolbar item (which requires me to change the toolbar item's image when the toggle is flipped.

I can do this by using NSUIViewToolbarItem and embedding a UIButton. But when you feed an SF Symbol image to UIButton and call sizeToFit on it it doesn't generate a view that matches the size of UIBarButtonItems for all the other NSToolbarItems next to it. I can hard code size constraints in like this to make it size properly:

 NSLayoutConstraint *width = [theUIButtonToEmbedInToolbarItem.widthAnchor constraintEqualToConstant:32.0];

    NSLayoutConstraint *height = [theUIButtonToEmbedInToolbarItem.heightAnchor constraintEqualToConstant:32.0];

//activate these constraints and embed the UIButton in the NSToolbarItem.

And that's works but I'm guessing the size so the layout could break in a OS update.

I tried just feeding an SF Symbol image to NSToolbarItem's image property directly but then the toolbar item doesn't draw at all (edit: this is only true when using an NSToolbarItem subclass, which I created to change the toolbar item's image itself when the toggle property is flipped)

//Inside my NSToolbarItem subclass.
-(void)setOn:(BOOL)isOn
{
    if (_on != on)
   {
        _on = isOn;
       self.image = (isOn) ? self.onImage : self.offImage;
  }
}

So when using NSToolbaritem's image property directly setting the image property works fine, this means I have to track the toggle state externally which is possible but definitely not as nice).

Edit: Actually if forgot to modify my toolbar item subclass to subclass NSToolbarItem directly (was subclassing NSUIViewToolbarItem when I was first experimenting with using UIButton).

Using the image property on NSToolbarItem directly works for me. So I'm happy. I still think it'd be useful for clients that need to embed custom views inside a NSToolbarItem to get some kind of size recommendation.

Using the image property on NSToolbarItem and passing in a SF symbol image does not create a toolbar item that matches the size of the other items created through UIBarButtonItem. The image toolbar item is clearly bigger than the ones created with UIBarButtonItem APi. Setting the bordered property to YES (which means only bordered on highlight these days) did the trick.

Mac Catalyst Determine Default Size of NSToolbarItems When Creating them with UIBarButtonItems and SF Symbol Images?
 
 
Q