The built-in cocoa controls are great for most things. However, every developer reaches a point where they need to do some custom drawing.
The drawing is easy enough, but you may run into the same issue that we recently did. Our custom drawing code worked fine with when in a parent view with standard NSAppearanceNameAqua appearance, but when the parent view used NSAppearanceNameVibrantDark drawing behaved in unexpected ways.
The easiest solution that we found to address this issue was to set NSAppearanceNameAqua on the views where we were doing the custom drawing.